pandas 滚动平均值并堆叠先前的值

问题描述 投票:0回答:1

我有一个形状为 (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()

但这不会为我产生上述结构,因为我无法堆叠以前的值。

python python-3.x pandas
1个回答
0
投票

我不确定您的预期结果,但您可以将系列重塑为具有三列的数据框,然后获取第四列中移动行的平均值:

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
© www.soinside.com 2019 - 2024. All rights reserved.