所以说我有一个熊猫系列,如:
s = pd.Series([1,2],index=[0,3])
0 1
3 2
dtype: int64
索引中的0
和3
之间有一个间隙,所以我想要添加更多的行来填充该间隙以获取[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,所以问了一个问题,为什么它起作用:-),大声笑)>
答案 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