pandas库学习(四) reindex

pandas对象的一个重要方法是reindex,其作用是创建一个适应新索引的新对象。比如如下:
obj = 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

现在想重新调整索引,于是这样操作:
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

不存在的值就添加为NaN

有时候会有很多重复的数据,但是又懒得一个个输入,所以可以进行一些插值处理,reindex中的method方法可以达到此目的,使用ffill方法实现向前值填充,比如:
obj3 = Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])
obj3.reindex(range(6),method='ffill')

0      blue
1      blue
2    purple
3    purple
4    yellow
5    yellow
dtype: object

看结果,分别在0,2,4的前面(1,3,5)分别插入了相应的值
method还有这些参数:
bfill向后填充
pad向前搬运
backfill向后搬运,大家可以试试效果

如果有一个DataFrame对象,我现在想更改它的索引怎么办,使用reindex方法
比如:
frame=DataFrame(np.arange(9).reshape((3,3)),index=['a','c','d'],columns=['Ohio','Texas','California'])

   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

现在这个索引是['a','c','d'],我想改成['a','b','c','d']怎么办,执行以下操作就可以:
frame2=frame.reindex(['a','b','c','d'])

   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

结果b这一行为NaN,因为我们没有给它任何值,所以全部是NaN
同样,使用 columns 关键字可以使列重新索引:
states = ['Texas', 'Utah', 'California']
frame.reindex(columns=states)

   Texas  Utah  California
a      1   NaN           2
c      4   NaN           5
d      7   NaN           8

同样Utah这一列我们没有给任何数据,所以也为NaN

对于DataFrame,我们同样可以像Series一样进行插值查找,比如:

   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

frame.reindex(['a','b','c','d'],method='ffill')

   Ohio  Texas  California
a     0      1           2
b     0      1           2
c     3      4           5
d     6      7           8

需要注意的是,插值只在行侧(0坐标轴)进行,即这样操作是没有用的:
frame.reindex(columns=['Texas', 'Ohio', 'California','wzh'],method='ffill')

以下两种操作是等价的:
frame.ix[['a', 'b', 'c', 'd'], ['Texas', 'Ohio', 'California']]
frame.reindex(index=['a', 'b', 'c', 'd'],columns=['Texas', 'Ohio', 'California'])

下面是reindex具体的参数:


pandas库学习(四) reindex_第1张图片
image.jpeg

你可能感兴趣的:(pandas库学习(四) reindex)