重新索引
 
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()

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

pandas读书笔记、重新索引的更多相关文章

  1. pandas读书笔记 算数运算和数据对齐

    pandas最重要的一个功能是,它可以对不同索引的对象进行算数运算.在对象相加时,如果存在不同的索引对,则结果的索引就是该索引对的并集. Series s1=Series([,3.4,1.5],ind ...

  2. 《Microsoft SQL Server 2008 Internals》读书笔记--目录索引

    http://blog.csdn.net/downmoon/article/details/5256548 https://sqlserverinternals.com/companion/

  3. 【MySQL 读书笔记】普通索引和唯一索引应该怎么选择

    通常我们在做这个选择的时候,考虑得最多的应该是如果我们需要让 Database MySQL 来帮助我们从数据库层面过滤掉对应字段的重复数据我们会选择唯一索引,如果没有前者的需求,一般都会使用普通索引. ...

  4. 【MySQL 读书笔记】当我们在使用索引的时候我们在做什么

    我记得之前博客我也写过关于索引使用的文章,但是并不全面,这次尽量针对重点铺全面一点. 因为索引是数据引擎层的结构我们只针对最常见使用的 Innodb 使用的 B+Tree 搜索树结构进行介绍. 每一个 ...

  5. Mysql实战45讲 04讲深入浅出索引(上)读书笔记 极客时间

    极客时间 Mysql实战45讲 04讲深入浅出索引 极客时间(上)读书笔记  笔记体悟 1.索引的作用:提高数据查询效率2.常见索引模型:哈希表.有序数组.搜索树3.哈希表:键 - 值(key - v ...

  6. [读书笔记] Python数据分析 (五) pandas入门

    pandas: 基于Numpy构建的数据分析库 pandas数据结构:Series, DataFrame Series: 带有数据标签的类一维数组对象(也可看成字典) values, index 缺失 ...

  7. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  8. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  9. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

随机推荐

  1. Python之switch

    首先声明,Python没有switch!!! 通过函数与字典的结合实现 #!/usr/bin/python #coding:utf-8 from __future__ import division ...

  2. 1006 -- Biorhythms

    Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 138926   Accepted: 44590 Des ...

  3. 微信小程序の条件渲染

    <view> 今天吃什么 </view> <view wx:if="{{condition==1}}">饺子</view> < ...

  4. Pyinstaller 打包exe 报错 "failed to execute script XXX"的一种解决方案

    最近用PyQt5写了一个界面小程序,需要打包成exe给到其他windows上使用,一开始使用python 3.7 64位,用pyinstaller打包exe,在64位机上运行正常. 但是目标电脑是32 ...

  5. systemd-tmpfiles - Operation not permitted chown ; systemd-modules-load.service

    systemd-tmpfiles-setup.service  fail  一般为 /exports/rfs/var/lib/systemd/ 下的文件属性问题 , chown -R   root:r ...

  6. python 对redis key的基本操作

    首先看一下Python 操作redis.StrictRedis 的初始化方法__init__ def __init__(self, host='localhost', port=6379, db=0, ...

  7. spring 结合 redis 例子 (转)

    好了费话不多说了,介绍下spring 结合redis是怎么操作数据的 这里我用了maven管理,由于简单嘛,依赖下包就行了..不用单独去依赖包,成了我的习惯 好了,下面是pom的代码 <proj ...

  8. SpringCloud---分布式服务跟踪---Spring Cloud Sleuth

    1.概述 1.1 为什么要用到服务跟踪? 随着业务的发展,系统规模也会变得越来越大,各服务之间的调用关系也变得越来越错综复杂: 通常一个由客户端发起的请求   在后端系统中会经过多个不同的微服务调用  ...

  9. mongodb数据库管道操作

    1.$project(修改文档的结构,可以用来重命名.增加或删除文档中的字段) db.order.aggregate([ { $project:{ rade_no:1, all_price:1} } ...

  10. git——修改已经提交并push后的commit注释

    把代码push到远程后,发现commit的注释居然多了几个错别字,不行,必须改了! 搜索了一些答案之后自己做了一个总结如下: ①修改倒数第次的commit 指令:$ git rebase -i HEA ...