根据索引号间隙填充缺失的行,为什么有效? - pandas 系列
Fill missing rows based on index number gaps, why does it work? - pandas series
假设我有一个 pandas 系列,如:
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,所以问了一个问题为什么它有效:-),大声笑)
原因很简单,因为 reindex()
是如何实现的。
如果您查看文档中给出的示例,执行 reindex()
只会在指定范围内添加具有 NaN 值的缺失索引。它不应该更改可用条目的索引。
Intrinsic data alignment. 基本上,您的源数据与索引 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
假设我有一个 pandas 系列,如:
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,所以问了一个问题为什么它有效:-),大声笑)
原因很简单,因为 reindex()
是如何实现的。
如果您查看文档中给出的示例,执行 reindex()
只会在指定范围内添加具有 NaN 值的缺失索引。它不应该更改可用条目的索引。
Intrinsic data alignment. 基本上,您的源数据与索引 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