【问题标题】:How to generate a Trailing Average in Python Pandas Dataframe如何在 Python Pandas Dataframe 中生成追踪平均值
【发布时间】:2018-09-04 23:11:54
【问题描述】:

我从上一个问题中得出以下结论。我用了公式

df['3D Average'] = df.iloc[::-1].groupby('Hour').Value.rolling(window = 
3).mean()\.shift().sort_index(level = 1).values

在会员的帮助下填充 3D 平均列。这个公式的作用是查看接下来的 3 个日期,并对与参考行具有相同小时的值进行平均。

但是,问题是我刚刚意识到我的日期在这里增加,所以我真正需要的是滞后而不是平均前进。因此,1/4 应该是具有任何值的第一个日期,因为在此之前的任何值都没有足够的值,并且随着 3DAverage 列填满,它应该不断填充 Value 列的尾随 3Day 平均值。

Date     Hour    Value   3DAverage
1/1       1       57      53.33
1/1       2       43      42.33
1/1       3       44      45.33
1/2       1       51      ...
1/2       2       40      ...
1/2       3       42      ...
1/3       1       56      ...
1/3       2       42
1/3       3       48
1/4       1       53
1/4       2       45
1/4       3       46
1/5       1       56
1/5       2       46
1/5       3       48
1/5       4       64 *       
1/6       1       50
1/6       2       41
1/6       3       42
1/7       1       57
1/7       2       43
1/7       3       45
1/8       1       58
1/8       2       49
1/8       3       41
1/9       1       53
1/9       2       46
1/9       3       47
1/10      1       58
1/10      2       49
1/10      3       40

我希望这是有道理的。需要明确的是,我仍然需要它忽略 1/5 Hour 4 额外行,因为它应该只使用每行中引用的小时。感谢您的帮助!

【问题讨论】:

  • 您能否简单地使用where 子句更新您当前的表达式,以检查您与第一行是否有足够的时间差?

标签: python pandas dataframe average mean


【解决方案1】:

我觉得之前的代码可以这样改。

df['3D Average'] = df.groupby('Hour').Value.rolling(window = 3).mean().sort_index(level = 1).values

【讨论】:

    猜你喜欢
    • 2020-09-27
    • 2021-05-05
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2021-10-20
    相关资源
    最近更新 更多