gpt4 book ai didi

python - Pandas ,忽略 NaN 的滚动最大值

转载 作者:行者123 更新时间:2023-12-02 02:14:58 35 4
gpt4 key购买 nike

我想计算过去 3 个滚动行中的最大值,如果我看到它们,则忽略 NaN。我以为 skipna 会这样做,但事实并非如此。我如何忽略 NaN,以及 skipna 应该做什么?

在这段代码中

import pandas as pd

df = pd.DataFrame({'sales': [25, 20, 14]})
df['max'] = df['sales'].rolling(3).max(skipna=True)
print(df)

最后一列是

   sales   max
0 25 NaN
1 20 NaN
2 14 25.0

但我希望它是

   sales   max
0 25 25.0
1 20 25.0
2 14 25.0

最佳答案

skipna= 的默认值为 True,因此在您的代码中显式添加它没有任何效果。如果将其设置为 False,如果原始 sales 中有 NaN,则可能会得到 NaN 作为最大值 列。关于为什么会发生这种情况有一个很好的解释 here .

在您的示例中,您在前两行中获得了那些 NaN,因为 .rolling(3) 调用告诉 pandas 如果值少于 3 个在滚动窗口中,它们将被设置为 NaN。您可以在 .rolling() 调用中设置第二个参数 (min_periods) 以要求至少一个值:

df['max'] = df['sales'].rolling(3,1).max()
df
# sales max
# 0 25 25.0
# 1 20 25.0
# 2 14 25.0

关于python - Pandas ,忽略 NaN 的滚动最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67311104/

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