gpt4 book ai didi

python - Pandas 滚动给出 NaN

转载 作者:太空狗 更新时间:2023-10-29 18:01:21 25 4
gpt4 key购买 nike

我正在查看有关窗口函数的教程,但我不太明白为什么以下代码会产生 NaN。

如果我没理解错的话,代码会创建一个大小为 2 的滚动窗口。为什么第一、第四和第五行的值为 NaN?起初,我认为这是因为将 NaN 与另一个数字相加会产生 NaN,但后来我不确定为什么第二行不会是 NaN。

dft = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]}, 
index=pd.date_range('20130101 09:00:00', periods=5, freq='s'))


In [58]: dft.rolling(2).sum()
Out[58]:
B
2013-01-01 09:00:00 NaN
2013-01-01 09:00:01 1.0
2013-01-01 09:00:02 3.0
2013-01-01 09:00:03 NaN
2013-01-01 09:00:04 NaN

最佳答案

首先要注意的是,默认情况下 rolling 会查找前 n-1 行数据进行聚合,其中 n 是窗口大小。如果不满足该条件,它将为窗口返回 NaN。这就是第一行发生的事情。第四行和第五行,因为总和中的一个值是 NaN。

如果您想避免返回 NaN,您可以将 min_periods=1 传递给将窗口中有效观察的最小所需数量减少到 1 而不是 2 的方法:

>>> dft.rolling(2, min_periods=1).sum()
B
2013-01-01 09:00:00 0.0
2013-01-01 09:00:01 1.0
2013-01-01 09:00:02 3.0
2013-01-01 09:00:03 2.0
2013-01-01 09:00:04 4.0

关于python - Pandas 滚动给出 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40814201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com