重新索引
 
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. GCD 与XOR

    题目:UVA12716 题意:  问 gcd(i,j) = i ^ j  的对数(j <=i <= N ) N的范围为30000000,有10000组样例 分析: 有几个结论:(1)若 a ...

  2. 发现最新版百度Android 定位SDK v6.1.3 网络定位bug

    对于百度地图已经实在忍无可忍了,实验室两年以前的一个项目用到了百度地图,以前师兄毕业了,我来维护这个破项目,百度地图推出新版本出来后,老版本的api不能用了,不能做到向下兼容吗?换掉少量的api也就算 ...

  3. texi2dvi - 打印 Texinfo 文档

    SYNOPSIS 总览 texi2dvi [OPTION]... FILE... DESCRIPTION 描述 依次从 Tex 系统中运行每个 Texinfo 或者 LaTex 文件 FILE,直到解 ...

  4. printf 格式化打印 awk 数据处理工具

    printf解析 这个玩意说白了,就是格式化打印输出. awk awk与sed都是处理数据的工具.sed是处理整行的数据,awk则比较倾向于一行当中分成数个[字段]来处理. 具体操作: 注意的几个点 ...

  5. scrollHeight与offsetHeight

    offsetXxx 是 HTMLElement 的属性, HTMLElement 接口表示所有的 HTML 元素,scrollXxx 是 Element 的属性,Element 是一个通用性非常强的基 ...

  6. CSS Id 和 Class

    id 和 class 选择器 如果你要在HTML元素中设置CSS样式,你需要在元素中设置"id" 和 "class"选择器.直线电机哪家好 id 选择器 id ...

  7. SpringBoot整合MongoDB,在多数据源下实现事务回滚。

    项目中用到了MongoDB,准备用来存储业务数据,前提是要实现事务,保证数据一致性,MongoDB从4.0开始支持事务,提供了面向复制集的多文档事务特性.能满足在多个操作,文档,集合,数据库之间的事务 ...

  8. Ext 面板(Panel)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Ext 消息框

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. C#简单游戏外挂制作(以Warcraft Ⅲ为例)

    网上有很多外挂制作的教程,大多是讲针对大型网络游戏的,主要包含一些抓包.反汇编.C++的知识综合.事实也如此,常见的外挂都是使用VC++写的,从来没有过C#或者其他.NET语言编写的外挂. 作为微软. ...