在行上应用的几何平均值

dat*_*ana 6 python numpy scipy pandas

我有这个数据框作为例子:

Col1       Col2       Col3       Col4
   1          2          3        2.2
Run Code Online (Sandbox Code Playgroud)

我想添加一个名为'Gmean'的第4列,用于计算每行前3列的几何平均值.

怎么能完成它?

谢谢!

Div*_*kar 6

一种方法是Scipy's geometric mean function-

from scipy.stats.mstats import gmean

df['Gmean'] = gmean(df.iloc[:,:3],axis=1)
Run Code Online (Sandbox Code Playgroud)

formula of geometric mean自身的另一种方式-

df['Gmean'] = np.power(df.iloc[:,:3].prod(axis=1),1.0/3)
Run Code Online (Sandbox Code Playgroud)

如果有完全3列,只需使用df而不是df.iloc[:,:3].此外,如果您正在寻找性能,您可能希望使用df.values或使用基础数组数据df.iloc[:,:3].values.