重建索引

阅读: 5528     评论:1

reindex方法用于重新为Pandas对象设置新索引。这不是就地修改,而是会参照原有数据,调整顺序。

In [96]: obj=pd.Series([4.5,7.2,-5.3,3.6],index = ['d','b','a','c'])

In [97]: obj
Out[97]:
d    4.5
b    7.2
a   -5.3
c    3.6
dtype: float64

reindex会按照新的索引进行排列,不存在的索引将引入缺失值:

In [99]: obj2 = obj.reindex(list('abcde'))

In [100]: obj2
Out[100]:
a   -5.3
b    7.2
c    3.6
d    4.5
e    NaN
dtype: float64

也可以为缺失值指定填充方式method参数,比如ffill表示向前填充,bfill表示向后填充:

In [101]: obj3 = pd.Series(['blue','purple','yellow'],index = [0,2,4])

In [102]: obj3
Out[102]:
0      blue
2    purple
4    yellow
dtype: object

In [103]: obj3.reindex(range(6),method='ffill')
Out[103]:
0      blue
1      blue
2    purple
3    purple
4    yellow
5    yellow
dtype: object

对于DataFrame这种二维对象,如果执行reindex方法时只提供一个列表参数,则默认是修改行索引。可以用关键字参数columns指定修改的是列索引:

In [104]: f = pd.DataFrame(np.arange(9).reshape((3,3)),index=list('acd'),columns=['beijing','shanghai','guangzhou'])

In [105]: f
Out[105]:
   beijing  shanghai  guangzhou
a        0         1          2
c        3         4          5
d        6         7          8

In [106]: f2 = f.reindex(list('abcd'))

In [107]: f2
Out[107]:
   beijing  shanghai  guangzhou
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

In [112]: f3 = f.reindex(columns=['beijing','shanghai','xian','guangzhou'])

In [113]: f3
Out[113]:
   beijing  shanghai  xian  guangzhou
a        0         1   NaN          2
c        3         4   NaN          5
d        6         7   NaN          8

 Index 轴向上删除条目 

评论总数: 1


点击登录后方可评论

reindex()理解成"索引重排"貌似更好理解。