2017-02-24 59 views
6

我有此數據幀例如:幾何平均施加在

Col1  Col2  Col3  Col4 
    1   2   3  2.2 

我想加入一個被稱爲「Gmean」即計算在每個行中的前3列的幾何平均第4列。

怎樣才能完成它?

謝謝!

回答

5

一種方法是用Scipy's geometric mean function -

from scipy.stats.mstats import gmean 

df['Gmean'] = gmean(df.iloc[:,:3],axis=1) 

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

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

如果恰好有3列,只用df代替df.iloc[:,:3]。另外,如果您正在尋找性能,則可能需要使用df.valuesdf.iloc[:,:3].values來處理底層陣列數據。

+0

太棒了!工作! – datascana

4
df.assign(Gmean=df.iloc[:, :3].prod(1) ** (1./3)) 

    Col1 Col2 Col3 Col4  Gmean 
0  1  2  3 2.2 1.817121