【发布时间】: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