【问题标题】:Calculating Rolling forward averages with pandas用 pandas 计算前滚平均值
【发布时间】:2019-09-09 11:59:46
【问题描述】:

我需要计算数据框中的一些前滚平均值,但我真的不知道从哪里开始。

我知道如果我想提前 10 天选择一个单元格,我会选择 df.shift(-10),但我想做的是计算提前 10 到 15 天之间的平均值。

所以我的想法是df.rolling(-10,-15).mean(),如果我试图计算一个移动平均线,那么 df.rolling(15, 10).mean() 会很好地工作,我确实考虑过只是计算这样的平均值,然后以某种方式移动数据。

任何帮助都会很棒

非常感谢

【问题讨论】:

    标签: python pandas moving-average


    【解决方案1】:

    您可以提前 5 天计算滚动平均值,然后再计算 10 个周期的shift。由于rolling中的负值是不允许的,所以你可以反转轴,向后计算,然后再次反转(见How to use Pandas rolling_* functions on a forward-looking basis):

    df = pd.DataFrame(np.random.rand(100, 2))
    df[::-1].rolling(5).mean()[::-1].shift(-10)
    

    【讨论】:

    • 啊,我终于可以换班了!我不知道,是的,这是一个很好的答案,这正是我所追求的,谢谢伙计
    【解决方案2】:

    上面的答案看起来不对。恕我直言,你不能倒车和换档。

    df = pd.DataFrame(np.random.randint(low=0, high=10, size=(100, 2))) # int easier to interpret
    df[::-1].rolling(window=5, min_periods=1).mean()[::-1]
    

    这也有效,但您会丢失最后 4 个值:

    df.rolling(window=5, min_periods=1).mean().shift(-5)
    

    任意移动(偏移)的滚动窗口这个更难的问题可能需要以某种方式使用.shift()。

    【讨论】:

      猜你喜欢
      • 2018-05-08
      • 2019-03-07
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 2022-11-21
      • 2015-02-12
      • 2018-05-23
      • 1970-01-01
      相关资源
      最近更新 更多