pandas学习笔记-重新索引
来源:互联网 发布:剑灵龙女身材数据 编辑:程序博客网 时间:2024/06/14 15:47
pandas学习笔记-重新索引
pandas对象的一个重要方法是reindex,其作用是创建一个适应新索引的新对象。以一个简单示例来说:
import pandas as pdobj = pd.Series([4.5,7.2,-5.3,3.6],index=['d','b','a','c'])print obj
结果d 4.5b 7.2a -5.3c 3.6dtype: float64
调用该Series的reindex将会根据新索引进行重排。如果某个索引值当前不存在,就引入缺失值:
obj1 = obj.reindex(['a','b','c','d','e'])print obj1
结果a -5.3b 7.2c 3.6d 4.5e NaNdtype: float64
obj2 = obj.reindex(['a','b','c','d','e'],fill_value=0)print obj2
结果a -5.3b 7.2c 3.6d 4.5e 0.0dtype: float64
对于时间序列这样的有序数组,重新索引时可能需要做一些插值处理。method选项即可达到此目的,例如,使用ffill可以实现向前值填充:
obj3 = pd.Series(['blue','purple','yellow'],index=[0,2,4])obj4 = obj3.reindex(range(6),method='ffill')print obj4
结果0 blue1 blue2 purple3 purple4 yellow5 yellowdtype: object
reindex的(插值)method选项
对于DataFrame,reindex可以修改(行)索引、列,或两个都修改。如果仅传入一个序列,则会重新索引行:
frame = pd.DataFrame(np.arange(9).reshape((3,3)),index=['a','c','d'],columns=['Ohio','Texas','California'])print frame
结果 Ohio Texas Californiaa 0 1 2c 3 4 5d 6 7 8
frame2 = frame.reindex(['a','b','c','d'])print frame2
结果 Ohio Texas Californiaa 0.0 1.0 2.0b NaN NaN NaNc 3.0 4.0 5.0d 6.0 7.0 8.0
使用columns关键字即可重新索引列:
states = ['Texas','Utah','California']frame3 = frame.reindex(columns=states)print frame3
结果 Texas Utah Californiaa 1 NaN 2c 4 NaN 5d 7 NaN 8
也可以同时对行和列进行重新索引,而插值则只能按行应用(即轴0):
frame4 = frame.reindex(index=['a','b','c','d'],method='ffill',columns=states)print frame4
结果 Texas Utah Californiaa 1 NaN 2b 1 NaN 2c 4 NaN 5d 7 NaN 8
利用ix的标签索引功能,重新索引任务可以变得更简洁:
frame5 = frame.ix[['a','b','c','d'],states]print frame5
结果 Texas Utah Californiaa 1.0 NaN 2.0b NaN NaN NaNc 4.0 NaN 5.0d 7.0 NaN 8.0
0 0
- pandas学习笔记-重新索引
- pandas学习笔记-索引对象
- pandas学习笔记-索引、选取和过滤
- Pandas学习笔记:pandas基础
- pandas 学习笔记
- pandas学习笔记
- [pandas] 数据类型学习笔记
- pandas学习笔记
- pandas学习笔记
- pandas学习笔记
- Pandas学习笔记
- pandas学习笔记
- pandas numpy学习笔记
- pandas学习笔记-Series
- Pandas学习笔记
- python pandas学习笔记
- pandas学习笔记
- pandas学习笔记
- LS-GAN:把GAN建立在Lipschitz密度上
- 补2 项目五--5
- Grails WEB层 过滤器
- Cable master
- spark RDD算子(十三)之RDD 分区 HashPartitioner,RangePartitioner,自定义分区
- pandas学习笔记-重新索引
- Grails WEB层 AJAX
- .Net下RabbitMQ的使用(6) -- 消息的传输控制
- python知识点1
- Java8新特性
- Grails WEB层 内容协商
- macOS安装java8及环境变量配置
- 阿里云服务器建站之部署 LAMP (CentOS 7.2)
- UVa1225