.reindex
index:array-like,可选(可以按顺序指定或as关键字)新标签/索引符合。优选地,Index对象用于避免重复数据
fill_value:scalar,default np.NaN缺失值使用的值。默认为NaN,但可以是任何“兼容”值
In [178]: s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])
In [179]: s
Out[179]:
a -1.010924
b -0.672504
c -1.139222
d 0.354653
e 0.563622
dtype: float64
In [180]: s.reindex(['e', 'b', 'f', 'd']) # f为新添加的index,默认数值为nan
Out[180]:
e 0.563622
b -0.672504
f NaN
d 0.354653
dtype: float64
reindex不仅适用于series,同样适用于dataframe
例子1
In [181]: df
Out[181]:
one three two
a -0.626544 NaN -0.351587
b -0.138894 -0.177289 1.136249
c 0.011617 0.462215 -0.448789
d NaN 1.124472 -1.101558
In [182]: df.reindex(index=['c', 'f', 'b'], columns=['three', 'two', 'one'])
Out[182]:
three two one
c 0.462215 -0.448789 0.011617
f NaN NaN NaN
b -0.177289 1.136249 -0.138894
例子2
>>> index = ['Firefox', 'Chrome', 'Safari', 'IE10', 'Konqueror']
>>> df = pd.DataFrame({
... 'http_status': [200,200,404,404,301],
... 'response_time': [0.04, 0.02, 0.07, 0.08, 1.0]},
... index=index)
>>> df
http_status response_time
Firefox 200 0.04
Chrome 200 0.02
Safari 404 0.07
IE10 404 0.08
Konqueror 301 1.00
创建一个新索引并重新索引数据帧
>>> new_index= ['Safari', 'Iceweasel', 'Comodo Dragon', 'IE10',
... 'Chrome']
>>> df.reindex(new_index)
http_status response_time
Safari 404 0.07
Iceweasel NaN NaN
Comodo Dragon NaN NaN
IE10 404 0.08
Chrome 200 0.02
可以通过向关键字fill_value
传递值来填充缺少的值
>>> df.reindex(new_index, fill_value=0)
http_status response_time
Safari 404 0.07
Iceweasel 0 0.00
Comodo Dragon 0 0.00
IE10 404 0.08
Chrome 200 0.02
>>> df.reindex(new_index, fill_value='missing')
http_status response_time
Safari 404 0.07
Iceweasel missing missing
Comodo Dragon missing missing
IE10 404 0.08
Chrome 200 0.02
reindex_like()
让一个对象和另一个对象有相同的index 和 colums
In [186]: df2
Out[186]:
one two
a -0.626544 -0.351587
b -0.138894 1.136249
c 0.011617 -0.448789
In [187]: df3
Out[187]:
one two
a -0.375270 -0.463545
b 0.112379 1.024292
c 0.262891 -0.560746
In [188]: df.reindex_like(df2)
Out[188]:
one two
a -0.626544 -0.351587
b -0.138894 1.136249
c 0.011617 -0.448789