2
如何計算顯示groupby中總數百分比的列?pandas groupby:如何計算總數的百分比?
一種方式來做到這一點是在gorupby後手動計算的話,在這個例子中的最後一行:
import numpy as np
import pandas as pd
df= pd.DataFrame(np.random.randint(5,8,(10,4)), columns=['a','b','c','d'])
g = df.groupby('a').agg({'b':['sum','mean'], 'c':['sum'], 'd':['sum']})
g.columns = g.columns.map('_'.join)
g['b %']=g['b_sum']/g['b_sum'].sum()
然而,在我真實的數據,我還有更多的列,而且我在求和之後需要%,所以用這種方法我不得不手動改變列的順序。
是否有一個更直接的方法來做到這一點,使得%是總和之後的列?請注意,我需要agg()或類似的東西,因爲在我所有的groupbys中,我將不同的聚合函數應用於不同的列(例如x的sum和avg,但只有y的最小值等)。
謝謝!
謝謝!我可以使用lambda函數來計算groupby中的加權平均數嗎? –
嗯,你需要實現[this](https://stackoverflow.com/q/26205922/2901002)解決方案到'agg'嗎? – jezrael
我看到你在列名中用%替換lambda。但是如果我對同一列有多個lambda函數呢?例如。對於列b我可以做總和(b)和%,然後計算(b)和相關的%。現在我怎麼能重命名列,出於誠實地超越我的原因,使用嵌套字典進行重命名已被棄用? https://stackoverflow.com/questions/46694207/applying-different-aggregate-functions-to-different-columns-now-that-dict-with –