上一个章节中我们主要是介绍了pandas两种数据类型的具体属性,这个章节主要介绍操作Series和DataFrame中的数据的基本手段。
重新索引
pandas对象的一个重要方法是reindex,其作用是创建一个新对象,它的数据符合新的索引:
import pandas as pd obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c']) print(obj)
d 4.5 b 7.2 a -5.3 c 3.6 dtype: float64
用该Series的reindex将会根据新索引进行重排。如果某个索引值当前不存在,就引入缺失值:
obj2 = obj.reindex(['a', 'b', 'c', 'd', 'e']) print(obj2)
a -5.3 b 7.2 c 3.6 d 4.5 e NaN dtype: float64
对于时间序列这样的有序数据,从新索引时可能需要做一些插值处理。method选项即可达到此目的,例如,使用fill可以实现前向值填充:
obj3 = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4]) print(obj3)
0 blue 2 purple 4 yellow dtype: object
print(obj3.reindex(range(6), method='ffill'))
0 blue 1 blue 2 purple 3 purple 4 yellow 5 yellow dtype: object
借助DataFrame,reindex可以修改(行)索引和列。只传递一个序列时,会重新索引结果的行:
frame = pd.DataFrame(np.arange(9).reshape(3, 3), index=['a', 'c', 'd'], columns=['Ohio', 'Texas', 'California']) print(frame)
Ohio Texas California a 0 1 2 c 3 4 5 d 6 7 8
frame2= frame.reindex(['a', 'b', 'c', 'd']) print(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
列可以用columns关键字重新索引:
states = ['Texas', 'Utah', 'California'] print(frame.reindex(columns=states))
Texas Utah California a 1 NaN 2 c 4 NaN 5 d 7 NaN 8
持续更新中......