pandas 对列的子集应用自定义函数
pandas apply custom function on subset of the columns
我有一个数据框:
A B C v1 v2 v3
q 2 3 4 9 1
8 f 2 7 4 7
我想计算一个新列,它将包含所有 v 列的 RMS (sqrt(sum(x^2))
。
所以新的 df 将是:
A B C v1 v2 v3 v_rms
q 2 3 4 9 1 9.9
8 f 2 7 2 4 8.3
因为 sqrt(4^2 + 9^2 + 1^2) = 9.9, sqrt(7^2 + 2^2 + 4^2) = 8.3
最好的方法是什么?
将 DataFrame.filter
for v
columns, then DataFrame.pow
与 sum
一起使用,对于 sqrt
,将 pow
与 1/2
一起使用:
df['v_rms'] = df.filter(like='v').pow(2).sum(axis=1).pow(1/2)
print (df)
A B C v1 v2 v3 v_rms
0 q 2 3 4 9 1 9.899495
1 8 f 2 7 2 4 8.306624
我有一个数据框:
A B C v1 v2 v3
q 2 3 4 9 1
8 f 2 7 4 7
我想计算一个新列,它将包含所有 v 列的 RMS (sqrt(sum(x^2))
。
所以新的 df 将是:
A B C v1 v2 v3 v_rms
q 2 3 4 9 1 9.9
8 f 2 7 2 4 8.3
因为 sqrt(4^2 + 9^2 + 1^2) = 9.9, sqrt(7^2 + 2^2 + 4^2) = 8.3
最好的方法是什么?
将 DataFrame.filter
for v
columns, then DataFrame.pow
与 sum
一起使用,对于 sqrt
,将 pow
与 1/2
一起使用:
df['v_rms'] = df.filter(like='v').pow(2).sum(axis=1).pow(1/2)
print (df)
A B C v1 v2 v3 v_rms
0 q 2 3 4 9 1 9.899495
1 8 f 2 7 2 4 8.306624