-2

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

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,所以问了一个问题,为什么它会起作用 :-),哈哈)

4

2 回答 2

1

原因很简单,因为是如何reindex()实现的。

如果您查看文档中给出的示例,则执行reindex()只会在指定范围内添加缺失索引和 NaN 值。它不假设更改可用条目的索引。

于 2018-11-30T04:25:37.383 回答
1

内在数据对齐。 基本上,您的源数据与索引 0 和 3 对齐。当您使用重新索引时,您将创建新的行 1 和 2 并重用 0 和 3。

观察如果你这样做会发生什么:

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

输出:

0    1
0    1
3    2
3    2
dtype: int64

Pandas 自动使用索引对齐。

或者

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

输出:

1   NaN
2   NaN
5   NaN
6   NaN
dtype: float64
于 2018-11-30T04:28:03.110 回答