df = pd.DataFrame({'Number': [x for x in range(10)]})
df["rolling"] = df["Number"].rolling(3).mean()
print(df)
使用上面的代码,它将输出
Number rolling
0 0 NaN
1 1 NaN
2 2 1.0
3 3 2.0
4 4 3.0
5 5 4.0
6 6 5.0
7 7 6.0
8 8 7.0
9 9 8.0
因此,滚动方法适用于包含当前索引数据的数据,例如,第一个滚动平均值是在第3个位置计算的,我相信这是有好处的,您始终使用最新信息。
我真的可以将滚动方法应用于直到但不包括当前索引的数据吗?例如,现在应该使用data [0:3]在第4个位置计算第一个滚动平均值?
Number rolling
0 0 NaN
1 1 NaN
2 2 NaN
3 3 1.0
4 4 2.0
5 5 3.0
6 6 4.0
7 7 5.0
8 8 6.0
9 9 7.0
我知道如果执行此滚动并将结果移位1可以达到相同的结果,但是我想知道如何输入“正确”数据,如果我不希望滚动方法使用最后一个索引数据。
答案 0 :(得分:0)
如viktor先前所述,您可以结合使用shift和roll运算符。
df['rolling2'] = df['Number'].shift(1).rolling(3).mean()
Number rolling rolling+shift
0 0 NaN NaN
1 1 NaN NaN
2 2 1.0 NaN
3 3 2.0 1.0
4 4 3.0 2.0
5 5 4.0 3.0
6 6 5.0 4.0
7 7 6.0 5.0
8 8 7.0 6.0
9 9 8.0 7.0