基本功能
重新索引
Series的reindex方法
In [15]: obj = Series([3,2,5,7,6,9,0,1,4,8],index=[‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘, ...: ‘h‘,‘i‘,‘j‘]) In [16]: obj1 = obj.reindex([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘,‘i‘,‘j‘,‘k‘]) In [17]: obj1 Out[17]: a 3.0 b 2.0 c 5.0 d 7.0 e 6.0 f 9.0 g 0.0 h 1.0 i 4.0 j 8.0 k NaN dtype: float64
新索引值当前值缺失,则需要插值
前向值填充method=’ffill’,最后索引j对应的值来填充
In [19]: obj1 = obj.reindex([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘,‘i‘,‘j‘,‘k‘],metho ...: d=‘ffill‘) In [20]: obj1 Out[20]: a 3 b 2 c 5 d 7 e 6 f 9 g 0 h 1 i 4 j 8 k 8 dtype: int64
前向值搬运method=’pad’,最后索引j对应的值来填充
In [23]: obj1 = obj.reindex([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘,‘i‘,‘j‘,‘k‘],metho ...: d=‘pad‘) In [24]: obj1 Out[24]: a 3 b 2 c 5 d 7 e 6 f 9 g 0 h 1 i 4 j 8 k 8 dtype: int64
后向值填充method=’bfill’,最后索引j的后面的索引对应的值来填充,j的后一个位置为NaN的空行
In [62]: obj2 = obj.reindex([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘k‘,‘h‘,‘i‘,‘j‘],metho
...: d=‘bfill‘)
In [63]: obj2
Out[63]:
a 3.0
b 2.0
c 5.0
d 7.0
e 6.0
f 9.0
g 0.0
k NaN
h 1.0
i 4.0
j 8.0
dtype: float64
后向值搬运method=’backfill’,最后索引j的后面的索引对应的值来填充,j的后一个位置为NaN的空行
In [64]: obj2 = obj.reindex([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘k‘,‘h‘,‘i‘,‘j‘],metho ...: d=‘backfill‘) In [65]: obj2 Out[65]: a 3.0 b 2.0 c 5.0 d 7.0 e 6.0 f 9.0 g 0.0 k NaN h 1.0 i 4.0 j 8.0 dtype: float64
DataFrame的reindex方法
修改(行)索引、列,或两个都修改。
引入一个序列,则重新索引行,如下:
In [86]: data = {‘class‘:[‘语文‘,‘数学‘,‘英语‘],‘score‘:[120,130,140]} In [87]: frame = DataFrame(data) In [88]: frame Out[88]: class score 0 语文 120 1 数学 130 2 英语 140 In [89]: frame2 = frame.reindex([0,1,2,3]) In [90]: frame2 Out[90]: class score 0 语文 120.0 1 数学 130.0 2 英语 140.0 3 NaN NaN
行、列 都修改
In [94]: frame3 = frame.reindex(index=[11,22,33],columns = [‘a‘,‘b‘,‘c‘,‘d‘]) In [95]: frame3 Out[95]: a b c d 11 NaN NaN NaN NaN 22 NaN NaN NaN NaN 33 NaN NaN NaN NaN
reindex的参数如下:
删除指定轴(索引)上的项
Series
In [112]: obj = Series([1,2,3,4],index=[‘a‘,‘b‘,‘c‘,‘d‘]) In [113]: obj Out[113]: a 1 b 2 c 3 d 4 dtype: int64 In [114]: obj1 = obj.drop(‘c‘) In [115]: obj1 Out[115]: a 1 b 2 d 4 dtype: int64
DataFrame
删除单索引行
In [109]: frame Out[109]: class score 0 语文 120 1 数学 130 2 英语 140 In [110]: obj = frame.drop(0) In [111]: obj Out[111]: class score 1 数学 130 2 英语 140
删除多索引行
In [119]: frame Out[119]: class score 0 语文 120 1 数学 130 2 英语 140 In [120]: frame.drop([1,2]) Out[120]: class score 0 语文 120
删除多索引行(带axis)
In [130]: frame Out[130]: class score 0 语文 120 1 数学 130 2 英语 140 In [131]: frame.drop([1,2],axis=0) Out[131]: class score 0 语文 120
删除列(columns)(带axis)
In [135]: frame Out[135]: class score 0 语文 120 1 数学 130 2 英语 140 In [136]: frame.drop([‘class‘],axis=1) Out[136]: score 0 120 1 130 2 140
其中,axis=0,表示行,axis=1,表示列