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 –