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.powsum 一起使用,对于 sqrt,将 pow1/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