数据要偏移的熊猫滚动方法

时间:2018-10-31 13:48:44

标签: python pandas dataframe

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可以达到相同的结果,但是我想知道如何输入“正确”数据,如果我不希望滚动方法使用最后一个索引数据。

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