在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"))
我有一个包含 120 列的数据框 df
,名称为 A,B,C,D
等。假设 A 看起来像这样:
A
31
12
51
72
81
..
我想创建一个列 SDA,它将具有 A
元素的标准差,使得 的第一个值]SDA 将是 A
第一个值的标准差,SDA 的第二个值将是 [= 前两个值的标准差15=]。SDA 的第三个值将是列 A
等
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"))