如何使用 pandas 的重新索引方法 'ffill' 插入数据?

How to interpolate data using the pandas's reindex method 'ffill'?

我一直在阅读 Wes McKinney 的数据科学一书 Python。在本书的第五章——pandas简介——有一个小节是关于重建索引的。作者使用 pandas 的 reindex 方法向 DataFrame 对象添加新行; 'ffill' 方法用于前插缺失数据。 尽管我尝试实现相同的代码,但既没有创建新行也没有插入数据。我错过了什么?

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

一切正常,只需要将输出分配回变量 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