重新索引会更改DataFrame的行标签和列标签。重新索引意味着符合数据以匹配特定轴上的一组给定的标签。

可以通过索引来实现多个操作 -

  • 重新排序现有数据以匹配一组新的标签。
  • 在没有标签数据的标签位置插入缺失值(NA)标记。

示例

  1. import pandas as pd
  2. import numpy as np
  3. N=20
  4. df = pd.DataFrame({
  5. 'A': pd.date_range(start='2016-01-01',periods=N,freq='D'),
  6. 'x': np.linspace(0,stop=N-1,num=N),
  7. 'y': np.random.rand(N),
  8. 'C': np.random.choice(['Low','Medium','High'],N).tolist(),
  9. 'D': np.random.normal(100, 10, size=(N)).tolist()
  10. })
  11. #reindex the DataFrame
  12. df_reindexed = df.reindex(index=[0,2,5], columns=['A', 'C', 'B'])
  13. print (df_reindexed)
Python

执行上面示例代码,得到以下结果 -

  1. A C B
  2. 0 2016-01-01 Low NaN
  3. 2 2016-01-03 High NaN
  4. 5 2016-01-06 Low NaN
Shell

重建索引与其他对象对齐

有时可能希望采取一个对象和重新索引,其轴被标记为与另一个对象相同。 考虑下面的例子来理解这一点。

示例

  1. import pandas as pd
  2. import numpy as np
  3. df1 = pd.DataFrame(np.random.randn(10,3),columns=['col1','col2','col3'])
  4. df2 = pd.DataFrame(np.random.randn(7,3),columns=['col1','col2','col3'])
  5. df1 = df1.reindex_like(df2)
  6. print df1
Python

执行上面示例代码,得到以下结果 -

  1. col1 col2 col3
  2. 0 -2.467652 -1.211687 -0.391761
  3. 1 -0.287396 0.522350 0.562512
  4. 2 -0.255409 -0.483250 1.866258
  5. 3 -1.150467 -0.646493 -0.222462
  6. 4 0.152768 -2.056643 1.877233
  7. 5 -1.155997 1.528719 -1.343719
  8. 6 -1.015606 -1.245936 -0.295275
Shell

注意 - 在这里,df1数据帧(DataFrame)被更改并重新编号,如df2。 列名称应该匹配,否则将为整个列标签添加NAN

填充时重新加注

reindex()采用可选参数方法,它是一个填充方法,其值如下:

  • pad/ffill - 向前填充值
  • bfill/backfill - 向后填充值
  • nearest - 从最近的索引值填充

示例

  1. import pandas as pd
  2. import numpy as np
  3. df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
  4. df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3'])
  5. # Padding NAN's
  6. print df2.reindex_like(df1)
  7. # Now Fill the NAN's with preceding Values
  8. print ("Data Frame with Forward Fill:")
  9. print df2.reindex_like(df1,method='ffill')
Python

执行上面示例代码时,得到以下结果 -

  1. col1 col2 col3
  2. 0 1.311620 -0.707176 0.599863
  3. 1 -0.423455 -0.700265 1.133371
  4. 2 NaN NaN NaN
  5. 3 NaN NaN NaN
  6. 4 NaN NaN NaN
  7. 5 NaN NaN NaN
  8. Data Frame with Forward Fill:
  9. col1 col2 col3
  10. 0 1.311620 -0.707176 0.599863
  11. 1 -0.423455 -0.700265 1.133371
  12. 2 -0.423455 -0.700265 1.133371
  13. 3 -0.423455 -0.700265 1.133371
  14. 4 -0.423455 -0.700265 1.133371
  15. 5 -0.423455 -0.700265 1.133371
Shell

注 - 最后四行被填充了。

重建索引时的填充限制

限制参数在重建索引时提供对填充的额外控制。限制指定连续匹配的最大计数。考虑下面的例子来理解这个概念 -

示例

  1. import pandas as pd
  2. import numpy as np
  3. df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
  4. df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3'])
  5. # Padding NAN's
  6. print df2.reindex_like(df1)
  7. # Now Fill the NAN's with preceding Values
  8. print ("Data Frame with Forward Fill limiting to 1:")
  9. print df2.reindex_like(df1,method='ffill',limit=1)
Python

在执行上面示例代码时,得到以下结果 -

  1. col1 col2 col3
  2. 0 0.247784 2.128727 0.702576
  3. 1 -0.055713 -0.021732 -0.174577
  4. 2 NaN NaN NaN
  5. 3 NaN NaN NaN
  6. 4 NaN NaN NaN
  7. 5 NaN NaN NaN
  8. Data Frame with Forward Fill limiting to 1:
  9. col1 col2 col3
  10. 0 0.247784 2.128727 0.702576
  11. 1 -0.055713 -0.021732 -0.174577
  12. 2 -0.055713 -0.021732 -0.174577
  13. 3 NaN NaN NaN
  14. 4 NaN NaN NaN
  15. 5 NaN NaN NaN
Shell

注意 - 只有第7行由前6行填充。 然后,其它行按原样保留。

重命名

rename()方法允许基于一些映射(字典或者系列)或任意函数来重新标记一个轴。
看看下面的例子来理解这一概念。

示例

  1. import pandas as pd
  2. import numpy as np
  3. df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
  4. print df1
  5. print ("After renaming the rows and columns:")
  6. print df1.rename(columns={'col1' : 'c1', 'col2' : 'c2'},
  7. index = {0 : 'apple', 1 : 'banana', 2 : 'durian'})
Python

执行上面示例代码,得到以下结果 -

  1. col1 col2 col3
  2. 0 0.486791 0.105759 1.540122
  3. 1 -0.990237 1.007885 -0.217896
  4. 2 -0.483855 -1.645027 -1.194113
  5. 3 -0.122316 0.566277 -0.366028
  6. 4 -0.231524 -0.721172 -0.112007
  7. 5 0.438810 0.000225 0.435479
  8. After renaming the rows and columns:
  9. c1 c2 col3
  10. apple 0.486791 0.105759 1.540122
  11. banana -0.990237 1.007885 -0.217896
  12. durian -0.483855 -1.645027 -1.194113
  13. 3 -0.122316 0.566277 -0.366028
  14. 4 -0.231524 -0.721172 -0.112007
  15. 5 0.438810 0.000225 0.435479
Shell

rename()方法提供了一个inplace命名参数,默认为False并复制底层数据。 指定传递inplace = True则表示将数据重命名。

Pandas重建索引的更多相关文章

  1. Pandas | 08 重建索引

    重新索引会更改DataFrame的行标签和列标签. 可以通过索引来实现多个操作: 重新排序现有数据以匹配一组新的标签. 在没有标签数据的标签位置插入缺失值(NA)标记. import pandas a ...

  2. pandas重新索引

    #重新索引会更改DataFrame的行标签和列标签.重新索引意味着符合数据以匹配特定轴上的一组给定的标签. #可以通过索引来实现多个操作 - #重新排序现有数据以匹配一组新的标签. #在没有标签数据的 ...

  3. 重建索引提高SQL Server性能

    大多数SQL Server表需要索引来提高数据的访问速度,如果没有索引,SQL Server 要进行表格扫描读取表中的每一个记录才能找到索要的数据.索引可以分为簇索引和非簇索引,簇索引通过重排表中的数 ...

  4. DBCC DBREINDEX重建索引提高SQL Server性能

    大多数SQL Server表需要索引来提高数据的访问速度,如果没有索引,SQL Server 要进行表格扫描读取表中的每一个记录才能找到索要的数据.索引可以分为簇索引和非簇索引,簇索引通过重排表中的数 ...

  5. SQL Server 2012 批量重建索引

    关于索引的概念可以看看宋大牛的博客 T-SQL查询高级—SQL Server索引中的碎片和填充因子 整个数据库的索引很多,索引碎片多了,不可能一个个的去重建,都是重复性的工作,所以索性写了个存储过程, ...

  6. SQL Server重建索引计划

    每周日2点进行”一致性检查“ 每周六1点进行”重建索引“,重建索引会自动完成更新统计信息操作

  7. SQL Server通过整理索引碎片和重建索引提高速度

    本文章转载:http://database.51cto.com/art/201108/282408.htm SQL Server数据库中,当索引碎片太多时,就会拖慢数据库查询的速度.这时我们可以通过整 ...

  8. 11G在线重建索引

    SQL> select count(*) from test_idx; COUNT(*) ---------- 19087751 SQL> select segment_name,segm ...

  9. Oracle 重建索引脚本

    该指数是一个有力的武器,以提高数据库的查询性能. 没有索引,喜欢同样的标签库没有书籍,找书,他们想预订比登天还难.中,尤其是在批量的DML的情形下会产生对应的碎片.以及B树高度会发生对应变化.因此能够 ...

随机推荐

  1. server.xml文件详解

    一.server.xml文件介绍 1.server.xml作用     Server.xml配置文件用于对整个容器进行相关的配置. 2.server.xml文件的配置元素列表 <Server&g ...

  2. 编译型 解释型 C++工作原理

    C++教程_w3cschool https://www.w3cschool.cn/cpp/ C++工作原理: C++语言的程序因为要体现高性能,所以都是编译型的.但其开发环境,为了方便测试,将调试环境 ...

  3. 原!!win7-64 安装python的 redis客户端库

    安装python的redis客户端库 本人系统已装python2.7 利用cmd命令行: 1.cmd-->python -->>>进入python命令下 >>> ...

  4. PHP去除所有的空格

    1.去除两边的空格 trim($arr) 2.正则匹配去除所有的空格 preg_replace('# #','',$goodid)

  5. javascript教程5:--BOM操作

    1.BOM 简介 所谓的 BOM 即浏览器对象模型(Browser Object Model).BOM 赋予了 JS 操作浏览器的能力,即 window 操作.DOM 则用于创建删除节点,操作 HTM ...

  6. gevent For the Working Python Developer

    Gevent指南   gevent程序员指南 由Gevent社区编写 gevent是一个基于libev的并发库.它为各种并发和网络相关的任务提供了整洁的API. 介绍 贡献者 核心部分 Greenle ...

  7. xcode中全文查询某个中文字

    查询所有中文 [^"]*[\u4E00-\u9FA5]+[^"\n]*? 查询某个中文字“中”字 [^"]*[\u4e2d]+[^"\n]*? 中文字转成uni ...

  8. Mycat教程---数据库的分库分表

    mycat介绍 介绍在官方网站上有比较详细的介绍,在这里复制粘贴没什么意思,大家到官网上看 官网链接 前置条件 本教程是在window环境下运行的,实际生产推荐在Linux上运行. 必备条件(自行安装 ...

  9. C#实现对图片文件的压缩、裁剪操作实例

    本文实例讲述了C#对图片文件的压缩.裁剪操作方法,在C#项目开发中非常有实用价值.分享给大家供大家参考.具体如下: 一般在做项目时,对图片的处理,以前都采用在上传时,限制其大小的方式,这样带来诸多不便 ...

  10. 【转】Python爬虫(7)_scrapy-redis

    scrapy-redis使用以及剖析   scrapy-redis是一个基于redis的scrapy组件,通过它可以快速实现简单分布式爬虫程序,该组件本质上提供了三大功能: scheduler - 调 ...