在python中一次计算并生成多个标准差列,但不是固定的累积序列

Calculating and generating multiple Standard deviation column at a time in python but not in a fixed cumulative sequence

我有一个包含 120 列的数据框 df ,名称为 A,B,C,D等。假设 A 看起来像这样:

A
31
12
51
72
81
..

我想创建一个列 SDA,它将具有 A 元素的标准差,使得 的第一个值]SDA 将是 A 第一个值的标准差,SDA 的第二个值将是 [= 前两个值的标准差15=]。SDA 的第三个值将是列 A

的初始 3 个值的标准差
SDA
x1
x2
x3
x4
x5 
...

这里x1会计算31的SD(SD值可能为0,因为只有一个值),x2会计算31,12的SD。那么下一个会考虑31,12,51。接下来是 31,12,51,71 等等。

如何执行这样的操作并为每一列生成这样的标准偏差列(这将导致我在 df 同时生成许多 SD 列?

试试 expanding:

df["SDA"] = df.expanding().std().fillna(0)

>>> df
    A        SDA
0  31          0
1  12  13.435029
2  51  19.502137
3  72  25.826343
4  81  28.500877

要将此应用到所有列,您可以这样做:

output = df.join(df.expanding().std().fillna(0).add_prefix("SD"))

要仅将其应用于前 10 列:

output = df.join(df.iloc[:,:10].expanding().std().fillna(0).add_prefix("SD"))