重新索引
 
pandas对象的一个重要方法是 reindex ,其作用是创建一个适应新索引的新对象。
#reindex函数的参数
reindex(index,method,fill_value,limit,level,copy)
#index:用作索引的新序列
#method:插值(填充)方式
#fill_value:在重新索引的过程中,需要引入缺失值时使用的代替值
#limit:前向或后向填充时的最大填充量
#level:在MultiIndex的指定级别上匹配简单索引,否则选取其子集
#copy:默认为True,无论如何都复制,如果为False,则新旧相等就不复制
obj=Series([4.5,7.2,-5.3,3.6],index=['d','b','a','c'])
obj #调用该Series的reindex将会根据新索引进行重排
#如果某个索引值当前不存在,就引入缺失值
obj2=obj.reindex(['a','b','c','d','e'])
obj2 #填充缺失值
obj.reindex(['a','b','c','d','e'],fill_value=0)

重新索引时,可能需要做一些插值处理method选项可以达到此目的。

obj3=Series(['blue','purple','yellow'],index=[0,2,4])
obj3
obj3.reindex(range(6),method='ffill')
reindex的(插值)method选项
ffill或pad ——向前填充(或搬运)值
bfill或backfill——后向填充(或搬运)值

 重新索引行

frame=DataFrame(np.arange(9).reshape(3,3),index=['a','c','d'],
columns=['Ohio','Texas','California'])
frame frame2=frame.reindex(['a','b','c','d'])
frame2
 
重新索引列
使用columns关键字进行重新索引
states=['Texas','Utah','California']
frame.reindex(columns=states)

同时对行和列进行重新索引

frame.reindex(index=['a','b','c','d'],columns=states).ffill()

利用ix的标签索引功能,重新索引任务可以变得更简洁:

frame.ix[['a','b','c','d'],states]

问题记录:

在同时对行和列进行索引时,书中代码是:

frame.reindex(index=['a','b','c','d'],method='ffill',columns=states)

但是会出现错误:

ValueError: index must be monotonic increasing or decreasing
#不加ffill填充
frame.reindex(index=['a','b','c','d'],columns=states)

结果为

查找资料后自己初步理解为:为了重新索引方法,你的索引必须是有序/单调/递增的顺序,因为列也是重新索引的,而不是单调增加或减少。

书中的代码适合以前版本的pandas。

资料链接:https://stackoverflow.com/questions/44868877/valueerror-index-must-be-monotonic-increasing-or-decreasing-including-index-co/46893526#46893526

解决:

frame.reindex(index=['a','b','c','d'],columns=states).ffill()

上面写法可以达到与书中同样的结果。

最新文章

  1. Deque的部分成员函数 解析,关于这个类,百度有很多解析,唯独没有其函数介绍
  2. codevs 1115 开心的金明--01背包
  3. ie 7/8不支持trim的属性的解决方案
  4. BES
  5. Source Insight新建工程文件
  6. Android 启动过程总结
  7. codeforces 278Div1 B题
  8. scheme Continuation
  9. javascript中数组常用方法总结
  10. java方法的多态性理解
  11. 【Unity3D】Unity3D开发《我的世界》之七、番外篇
  12. leetcode 104 Maximum Depth of Binary Tree二叉树求深度
  13. WSGI及gunicorn指北(二)
  14. Linux命令:readonly
  15. 170830、oracle密码过期ORA-28002: 7天之后口令将过期的解决方法
  16. QQ登录整合/oauth2.0认证-03-对第二节的代码改进
  17. 父类是在子类创建对象时候 在子类中创建一个super内存空间
  18. Swift - 重写导航栏返回按钮
  19. [转]nginx折腾记(HTTP性能能测试,与Apache对比)
  20. VI设计对于企业文化建设的重要性

热门文章

  1. Javascript高级程序设计--读书笔记之面向对象(一)
  2. mavenFailed to execute goal org.apache.maven.plugins:maven-surefire-plugin解决方法
  3. MYSQL增量备份与恢复
  4. linux子网掩码优化配置
  5. 【Javascript DOM读书笔记】chapter8 充实文档内容
  6. 小白的第一篇python博客
  7. C++中的delete加深认识
  8. vue之ref
  9. js中获取basePath
  10. P1064 金明的预算方案 (分组背包稍稍变形)