重新索引
 
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. CF914D

    CF914D 用线段树乱搞一下就行qwq #include<iostream> #include<cstring> #include<cstdio> #includ ...

  2. hive HQL笔记

    #建表 create table sign_in (uri string , test string) row format delimited fields terminated by '|'; # ...

  3. shell只读变量

  4. dubbo-源码阅读之Filter默认实现

    SPI配置的默认实现 cache=com.alibaba.dubbo.cache.filter.CacheFilter validation=com.alibaba.dubbo.validation. ...

  5. linux常用命令记录(一)

    文件搜索命令 grep在文件中查找字符并输出 grep 字符或字符串 文件目录 grep pub /teach/.txt -c 字符出现总行数 grep .txt -n 行号 grep .txt -i ...

  6. 【读书笔记】剑指offer

    导语 所有的编程练习都在牛客网OJ提交,链接: https://www.nowcoder.com/ta/coding-interviews 九章算法的 lintcode 也有这本书的题目.https: ...

  7. 7、执行 suite 后,result.html 测试报告中,测试结果全部显示为通过原因分析

    测试用例中,断言 异常后,必须 raise 抛出异常, 若无raise ,则测试报告中测试结果全部显示为通过. 抛出后,显示实际测试结果,通过/未通过 __author__ = 'Administra ...

  8. UDP协议解析 以及和TCP协议的区别

    UDP(User Data Protocol)是传输层的用户数据报协议,有复用和分用以及差错检测的功能. 1) 多路复用(针对发送主机):从不同套接字收集数据块,并为每个数据块封装上首部信息,生成报文 ...

  9. rest_framework框架实现之(视图,路由,渲染器)

    一视图 一 在前面我们使用视图时继承的时APIview from rest_framework.response import Response from rest_framework.paginat ...

  10. mysql-一行分隔成多行数据

    mysql将某个字段有分隔符号分隔成多行数据 SELECT a.id, a. NAME, substring_index( substring_index( a.name, ',', b.help_t ...