如何使用熊猫的重新编制索引方法“填充”来插值数据?

时间:2019-07-13 09:22:33

标签: pandas python-2.7 reindex

我一直在阅读Wes McKinney的书《 Python for Data Science》。在本书的第五章(熊猫简介)中,有一个关于重新索引的小节。作者使用pandas的reindex方法将新行添加到DataFrame对象。方法“填充”用于转发插值丢失的数据。 尽管我尝试实现相同的代码,但是既不会创建新行,也不会插值数据。我想念什么?

import numpy as np
from pandas import DataFrame,Series

data = np.random.randint(0,100,size=(10,10))
df = DataFrame(data,index = [i for i in range(0,20,2)])
a = df[0]
a.reindex(range(20),method='ffill')
print a

我希望创建新的奇数行索引并用数据进行前向填充,但是提取的Seies对象'a'根本不会改变。

这是实际结果:

data = np.random.randint(0,100,size=(10,10))...
0     43
2     47
4     41
6     76
8     78
10     9
12    13
14    23
16    40
18    87
Name: 0, dtype: int64

这是预期的结果:

data = np.random.randint(0,100,size=(10,10))...
0     43
1     43
2     47
3     47
.
.
.
18    87
19    87
Name: 0, dtype: int64

1 个答案:

答案 0 :(得分:0)

一切正常,只需要将输出分配回变量a,因为reindex不能就地工作:

np.random.seed(1)
data = np.random.randint(0,100,size=(10,10))
df = pd.DataFrame(data,index = [i for i in range(0,20,2)])
a = df[0]
a = a.reindex(range(20),method='ffill')
print (a)
0     37
1     37
2     76
3     76
4     29
5     29
6      9
7      9
8      8
9      8
10    49
11    49
12    41
13    41
14    25
15    25
16     8
17     8
18    74
19    74
Name: 0, dtype: int32