我需要计算数据帧中的一些前滚平均值,而实际上不知道从哪里开始。
我知道我是否想提前10天选择一个单元格,说我会df.shift(-10)
,但是我想做的是计算提前10天到15天之间的平均值。
所以我的想法是df.rolling(-10,-15).mean()
,如果我试图只计算时间上的移动平均值df.rolling(15,10).mean()会很好,我做了考虑只计算这样的平均值,然后以某种方式移动数据。
任何帮助都会很棒
非常感谢
答案 0 :(得分:2)
您可以计算未来5天的滚动平均值,然后shift
再计算10个周期。由于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)
答案 1 :(得分:0)
以上答案看起来不正确。恕我直言,您不会后退和转移。
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()。