1. #重新索引会更改DataFrame的行标签和列标签。重新索引意味着符合数据以匹配特定轴上的一组给定的标签。
  2.  
  3. #可以通过索引来实现多个操作 -
  4.  
  5. #重新排序现有数据以匹配一组新的标签。
  6. #在没有标签数据的标签位置插入缺失值(NA)标记。
  7. #示例
  8.  
  9. import pandas as pd
  10. import numpy as np
  11.  
  12. N=20
  13.  
  14. df = pd.DataFrame({
  15. 'A': pd.date_range(start='2016-01-01',periods=N,freq='D'),
  16. 'x': np.linspace(0,stop=N-1,num=N),
  17. 'y': np.random.rand(N),
  18. 'C': np.random.choice(['Low','Medium','High'],N).tolist(),
  19. 'D': np.random.normal(100, 10, size=(N)).tolist()
  20. })
  21.  
  22. #reindex the DataFrame
  23. df_reindexed = df.reindex(index=[0,2,5], columns=['A', 'C', 'B'])
  24.  
  25. print (df_reindexed)
  26. #Python
  27. #执行上面示例代码,得到以下结果 -
  28.  
  29. A C B
  30. 0 2016-01-01 Low NaN
  31. 2 2016-01-03 High NaN
  32. 5 2016-01-06 Low NaN
  33. #Shell
  34. #重建索引与其他对象对齐
  35. #有时可能希望采取一个对象和重新索引,其轴被标记为与另一个对象相同。 考虑下面的例子来理解这一点。
  36.  
  37. #示例
  38.  
  39. import pandas as pd
  40. import numpy as np
  41.  
  42. df1 = pd.DataFrame(np.random.randn(10,3),columns=['col1','col2','col3'])
  43. df2 = pd.DataFrame(np.random.randn(7,3),columns=['col1','col2','col3'])
  44.  
  45. df1 = df1.reindex_like(df2)
  46. print df1
  47. #Python
  48. #执行上面示例代码,得到以下结果 -
  49.  
  50. col1 col2 col3
  51. 0 -2.467652 -1.211687 -0.391761
  52. 1 -0.287396 0.522350 0.562512
  53. 2 -0.255409 -0.483250 1.866258
  54. 3 -1.150467 -0.646493 -0.222462
  55. 4 0.152768 -2.056643 1.877233
  56. 5 -1.155997 1.528719 -1.343719
  57. 6 -1.015606 -1.245936 -0.295275
  58. #Shell
  59. #注意 - 在这里,df1数据帧(DataFrame)被更改并重新编号,如df2。 列名称应该匹配,否则将为整个列标签添加NAN。
  60.  
  61. #填充时重新加注
  62. #reindex()采用可选参数方法,它是一个填充方法,其值如下:
  63.  
  64. #pad/ffill - 向前填充值
  65. #bfill/backfill - 向后填充值
  66. #nearest - 从最近的索引值填充
  67. #示例
  68.  
  69. import pandas as pd
  70. import numpy as np
  71.  
  72. df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
  73. df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3'])
  74.  
  75. # Padding NAN's
  76. print df2.reindex_like(df1)
  77.  
  78. # Now Fill the NAN's with preceding Values
  79. print ("Data Frame with Forward Fill:")
  80. print df2.reindex_like(df1,method='ffill')
  81. #Python
  82. #执行上面示例代码时,得到以下结果 -
  83.  
  84. col1 col2 col3
  85. 0 1.311620 -0.707176 0.599863
  86. 1 -0.423455 -0.700265 1.133371
  87. 2 NaN NaN NaN
  88. 3 NaN NaN NaN
  89. 4 NaN NaN NaN
  90. 5 NaN NaN NaN
  91.  
  92. Data Frame with Forward Fill:
  93. col1 col2 col3
  94. 0 1.311620 -0.707176 0.599863
  95. 1 -0.423455 -0.700265 1.133371
  96. 2 -0.423455 -0.700265 1.133371
  97. 3 -0.423455 -0.700265 1.133371
  98. 4 -0.423455 -0.700265 1.133371
  99. 5 -0.423455 -0.700265 1.133371
  100. #Shell
  101. #注 - 最后四行被填充了。
  102.  
  103. #重建索引时的填充限制
  104. #限制参数在重建索引时提供对填充的额外控制。限制指定连续匹配的最大计数。考虑下面的例子来理解这个概念 -
  105.  
  106. #示例
  107.  
  108. import pandas as pd
  109. import numpy as np
  110.  
  111. df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
  112. df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3'])
  113.  
  114. # Padding NAN's
  115. print df2.reindex_like(df1)
  116.  
  117. # Now Fill the NAN's with preceding Values
  118. print ("Data Frame with Forward Fill limiting to 1:")
  119. print df2.reindex_like(df1,method='ffill',limit=1)
  120. #Python
  121. #在执行上面示例代码时,得到以下结果 -
  122.  
  123. col1 col2 col3
  124. 0 0.247784 2.128727 0.702576
  125. 1 -0.055713 -0.021732 -0.174577
  126. 2 NaN NaN NaN
  127. 3 NaN NaN NaN
  128. 4 NaN NaN NaN
  129. 5 NaN NaN NaN
  130.  
  131. #Data Frame with Forward Fill limiting to 1:
  132. col1 col2 col3
  133. 0 0.247784 2.128727 0.702576
  134. 1 -0.055713 -0.021732 -0.174577
  135. 2 -0.055713 -0.021732 -0.174577
  136. 3 NaN NaN NaN
  137. 4 NaN NaN NaN
  138. 5 NaN NaN NaN
  139. #Shell
  140. #注意 - 只有第7行由前6行填充。 然后,其它行按原样保留。
  141.  
  142. #重命名
  143. #rename()方法允许基于一些映射(字典或者系列)或任意函数来重新标记一个轴。
  144. #看看下面的例子来理解这一概念。
  145.  
  146. #示例
  147.  
  148. import pandas as pd
  149. import numpy as np
  150.  
  151. df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
  152. print df1
  153.  
  154. print ("After renaming the rows and columns:")
  155. print df1.rename(columns={'col1' : 'c1', 'col2' : 'c2'},index = {0 : 'apple', 1 : 'banana', 2 : 'durian'})
  156. #Python
  157. #执行上面示例代码,得到以下结果 -
  158.  
  159. col1 col2 col3
  160. 0 0.486791 0.105759 1.540122
  161. 1 -0.990237 1.007885 -0.217896
  162. 2 -0.483855 -1.645027 -1.194113
  163. 3 -0.122316 0.566277 -0.366028
  164. 4 -0.231524 -0.721172 -0.112007
  165. 5 0.438810 0.000225 0.435479
  166.  
  167. #After renaming the rows and columns:
  168. c1 c2 col3
  169. apple 0.486791 0.105759 1.540122
  170. banana -0.990237 1.007885 -0.217896
  171. durian -0.483855 -1.645027 -1.194113
  172. 3 -0.122316 0.566277 -0.366028
  173. 4 -0.231524 -0.721172 -0.112007
  174. 5 0.438810 0.000225 0.435479
  175. #Shell
  176. #rename()方法提供了一个inplace命名参数,默认为False并复制底层数据。 指定传递inplace = True则表示将数据重命名。

pandas重新索引的更多相关文章

  1. pandas重置索引的几种方法探究

    pandas重置索引的几种方法探究 reset_index() reindex() set_index() 函数名字看起来非常有趣吧! 不仅如此. 需要探究. http://nbviewer.jupy ...

  2. (三)pandas 层次化索引

    pandas层次化索引 1. 创建多层行索引 1) 隐式构造 最常见的方法是给DataFrame构造函数的index参数传递两个或更多的数组 Series也可以创建多层索引 import numpy ...

  3. pandas 数据索引与选取

    我们对 DataFrame 进行选择,大抵从这三个层次考虑:行列.区域.单元格.其对应使用的方法如下:一. 行,列 --> df[]二. 区域   --> df.loc[], df.ilo ...

  4. Pandas之索引

    Pandas的标签处理需要分成多种情况来处理,Series和DataFrame根据标签索引数据的操作方法是不同的,单列索引和双列索引的操作方法也是不同的. 单列索引 In [2]: import pa ...

  5. pandas DataFrame 索引(iloc 与 loc 的区别)

    Pandas--ix vs loc vs iloc区别 0. DataFrame DataFrame 的构造主要依赖如下三个参数: data:表格数据: index:行索引: columns:列名: ...

  6. Pandas重建索引

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

  7. pandas层级索引1

    层级索引(hierarchical indexing) 下面创建一个Series, 在输入索引Index时,输入了由两个子list组成的list,第一个子list是外层索引,第二个list是内层索引. ...

  8. pandas层级索引

    层级索引(hierarchical indexing) 下面创建一个Series, 在输入索引Index时,输入了由两个子list组成的list,第一个子list是外层索引,第二个list是内层索引. ...

  9. python库学习笔记——Pandas数据索引:ix、loc、iloc区别

    Different Choices for Indexing 1. loc--通过行标签索引行数据 1.1 loc[1]表示索引的是第1行(index 是整数) import pandas as pd ...

随机推荐

  1. Springmvc导出Excel(maven)

    一.导入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</ar ...

  2. SSM框架之整合(Maven实例)

    有不少朋友在maven中因为pom文件依赖的事导致报错 今天我这个快速搭建ssm框架,确保在jdk7或者jdk8的环境,tomcat没什么要求.但如果要用jdk8的话,最好用run as中的serve ...

  3. ubuntu 系统判断优盘的指定文件存在

    有很多的时候 会出现没有用的优盘路径 如果代码中写的是绝对路径 就有可能读不到优盘的内容 ,以下代码就是可以解决这样的问题 我已经封装成一个类 upanpath.h #ifndef UPANPATH_ ...

  4. ubuntu下修改网卡名称

    Ubuntu下把网卡eth0修改为eth1的步骤: 1.打开配置文件 /etc/udev/rules.d/70-persistent-net.rules,文件内容如下: # This file was ...

  5. MySQL(十三)事务处理和字符集

    一.事务处理 事务处理(transaction processing):是一种机制,用来维护数据库的完整性,管理必须成批执行的MySQL操作,以保证数据库不包含不完整的操作结果. 这样可以保证一组操作 ...

  6. at android.view.Surface.unlockCanvasAndPost(Native Method)

    at android.view.Surface.unlockCanvasAndPost(Native Method) 在绘制动画特效的时候点击back键会报以上异常. 主要原因:当点击back按钮时A ...

  7. linux中断源码分析 - 软中断(四)

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 在上一篇文章中,我们看到中断实际分为了两个部分,俗称就是一部分是硬中断,一部分是软中断.软中断是专门用于处理中断 ...

  8. Luogu3877 TJOI2010 打扫房间 二分图、网络流

    传送门 真是菜死了模板题都不会-- 首先\(30 \times 30\)并不能插头DP,但是范围仍然很小所以考虑网络流. 注意每个点都要包含在一个回路中,那么每一个点的度数都必须为\(2\),也就是说 ...

  9. (转)Putty server refused our key的三种原因和解决方法

    原文 上一篇博文介绍了使用Putty免密码登录,我后面试了另一台虚拟机,结果putty显示错误server refused our key(在linux下则表现为仍需要输入密码),搜索了下,很多人都遇 ...

  10. Luogu P3953 逛公园

    不管怎么说,这都是一道十分神仙的NOIp题 你可以说它狗,但不可以否认它就是NOIp的难度 首先这道题很显然是道图论题还是一道图论三合一(最短路+拓扑+图上DP) 先考虑最短路,我们分别以\(1\)和 ...