根据索引编号的缺口填充缺失的行,为什么行得通? -熊猫系列

时间:2018-11-30 04:16:59

标签: python pandas series fill gaps-in-data

所以说我有一个熊猫系列,如:

s = pd.Series([1,2],index=[0,3])

0    1
3    2
dtype: int64

索引中的03之间有一个间隙,所以我想要添加更多的行来填充该间隙以获取[0, 1, 2, 3]的索引。

因此所需的输出如下所示:

0    1.0
1    NaN
2    NaN
3    2.0
dtype: float64

我做到了:

print(s.reindex(range(s.index.min(),s.index.max()+1)))

成功了!

但是为什么?

我希望得到以下结果:

0    1.0
1    2.0
2    NaN
3    NaN
dtype: float64

但是没有,并且给出了预期的结果!

(您知道,我准备提出一个有关如何执行此操作的问题,但是在准备进行尝试时,我解决了:D,所以问了一个问题,为什么它起作用:-),大声笑)

2 个答案:

答案 0 :(得分:1)

原因仅仅是因为reindex()的实现方式。

如果您查看文档中给出的示例,则执行reindex()仅将指定范围内的缺失索引添加为NaN值。它不要求更改可用条目的索引。

答案 1 :(得分:1)

Intrinsic data alignment.基本上,源数据与索引0和3对齐。使用reindex时,您将创建新的行1和2,并重用0和3。

请注意,如果这样做,会发生什么情况

s.reindex([0,0,3,3])

输出:

0    1
0    1
3    2
3    2
dtype: int64

熊猫自动使用索引对齐。

s.reindex([1,2,5,6])

输出:

1   NaN
2   NaN
5   NaN
6   NaN
dtype: float64