Python学习笔记(6):Pandas的reindex方法
2019-02-10 本文已影响2人
刘爱玛
目录
- 一、reindex方法
一、reindex方法
reindex的作用是对Series或DataFrame对象创建一个适应新索引的新对象。
以一个简单示例说明。
import pandas as pd
from pandas import Series, DataFrame
obj = Series([4.5, 7.2, -5.3, 3.6], index = ['d', 'b', 'a', 'c'])
#reindex用法示例
obj2 = obj.reindex(['a', 'b', 'c', 'd', 'e'])
obj2
输出:a -5.3
b 7.2
c 3.6
d 4.5
e NaN
dtype: float64
可以看到reindex方法重新设定了一组数据的索引,如果索引在原数据中没有匹配,则以NaN填充。
如果不想以NaN填充呢?可以用fill_value方法来设置。
obj.reindex(['a', 'b', 'c', 'd', 'e'], fill_value = 0)
输出:a -5.3
b 7.2
c 3.6
d 4.5
e 0.0
dtype: float64
也可以用ffill方法实现前向填充,也就是补充的索引如果没有对应的数值,则取前一个索引的值填充。
obj3 = Series(['blue', 'purple', 'yellow'], index = [0, 2, 4])
obj3
输出:0 blue
2 purple
4 yellow
dtype: object
#使用ffill实现前向值填充
obj3.reindex(range(6), method = 'ffill')
输出:0 blue
1 blue
2 purple
3 purple
4 yellow
5 yellow
dtype: object
以上都是对Series的reindex用法,接下来看看DataFrame的reindex方法。
区别主要在于,DataFrame可以对index或columns使用reindex方法。
#DataFrame使用reindex方法
import numpy as np
frame = DataFrame(np.arange(9).reshape((3, 3)), index = ['a', 'c', 'd'], columns = ['Ohio', 'Texas', 'California'])
frame
输出:
Ohio Texas California
a 0 1 2
c 3 4 5
d 6 7 8
frame2 = frame.reindex(['a', 'b', 'c', 'd'])
frame2
输出:
Ohio Texas California
a 0.0 1.0 2.0
b NaN NaN NaN
c 3.0 4.0 5.0
d 6.0 7.0 8.0
states = ['Texas', 'Utah', 'California']
frame.reindex(columns = states)
输出:
Texas Utah California
a 1 NaN 2
c 4 NaN 5
d 7 NaN 8
#对DataFrame使用ffill方法,书里的写法会报错,用如下写法是没问题的
frame.reindex(index = ['a', 'b', 'c', 'd'], columns = states).ffill()
输出:
Texas Utah California
a 1.0 NaN 2.0
b 1.0 NaN 2.0
c 4.0 NaN 5.0
d 7.0 NaN 8.0
#标签索引loc方法(书中的'ix'方法已经不能使用了,loc方法等同原ix方法
frame.loc[['a', 'b', 'c', 'd'], states]
输出:
Texas Utah California
a 1.0 NaN 2.0
b NaN NaN NaN
c 4.0 NaN 5.0
d 7.0 NaN 8.0
假期最后一天。。。就写这么多了。。。