【问题标题】:Pandas DataFrame: difference between rolling and expanding functionPandas DataFrame:滚动和扩展功能的区别
【发布时间】:2018-11-08 06:13:59
【问题描述】:

谁能帮我理解 pandas 文档中给出的示例中滚动和扩展功能之间的区别。

df = DataFrame({'B': [0, 1, 2, np.nan, 4]})
df
     B
0  0.0
1  1.0
2  2.0
3  NaN
4  4.0


df.expanding(2).sum()
     B
0  NaN  # 0 + NaN
1  1.0  # 1 + 0
2  3.0  # 2 + 1
3  3.0  # ??
4  7.0  # ?? 

df.rolling(2).sum()
     B
0  NaN  # 0 + NaN
1  1.0  # 1 + 0
2  3.0  # 2 + 1
3  NaN  # NaN + 2
4  NaN  # 4 + NaN

我对每一行进行评论以表明我对计算的理解。 rolling 函数是这样吗? expanding 呢?第 3 行和第 4 行的 3 和 7 来自哪里?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    expanding 中的 2 是 min_periods 而不是 window

    df.expanding(min_periods=1).sum()
    Out[117]: 
         B
    0  0.0
    1  1.0
    2  3.0
    3  3.0
    4  7.0
    

    如果你想要与rolling 相同的结果,window 将等于数据帧的长度

    df.rolling(window=len(df),min_periods=1).sum()
    Out[116]: 
         B
    0  0.0
    1  1.0
    2  3.0
    3  3.0
    4  7.0
    

    【讨论】:

    • 嗯,好的。那么min_periods = 1 将与第 0 行中的 min_periods=2 不同。但我还是不明白:如果 min_periods=2 ,为什么 expanding 在第 3 行和第 4 行分别有 3 和 7?
    • @bakka 对当前行之前的所有值求和(包括当前行)
    • @bakka 它将是 0+1+2+NaN(3) 和 0+1+2+NaN +4 (7)
    • hm.. 所以在我的rolling 示例中,第三行中的NaN 不是来自NaN + 2
    • @bakka 你的滚动是正确的,我提到的是扩展
    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 2017-11-28
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 2013-03-09
    • 2019-01-17
    • 1970-01-01
    相关资源
    最近更新 更多