我有一个形状为 (2000,1) 的 pandas 数据框,我想计算滚动平均值,但也将以前的值保留为滞后变量。
假设系列:
1
2
3
4
5
6
7
8
9
10
滚动窗口为 3,我想要:
1,2,3,mean(4,5,6)
4,5,6,mean(7,8,9)
我可以使用滚动功能:
train_ds=train_ds.var1.rolling(3).mean()
但这不会为我产生上述结构,因为我无法堆叠以前的值。
我不确定您的预期结果,但您可以将系列重塑为具有三列的数据框,然后获取第四列中移动行的平均值:
df = pd.DataFrame(s.to_numpy()[: len(s) - len(s) % 3].reshape(-1, 3))
df["mean"] = df.shift(-1).agg("mean", axis=1)
0 1 2 mean
0 1 2 3 5.0
1 4 5 6 8.0
2 7 8 9 NaN
或者如果您想要一系列字符串作为结果:
s = df.astype(str).agg(", ".join, axis=1)
0 1, 2, 3, 5.0
1 4, 5, 6, 8.0
2 7, 8, 9, nan