Python 熊猫获得groupby的%价值

Python 熊猫获得groupby的%价值,python,pandas,percentage,Python,Pandas,Percentage,我做了一个熊猫团员 grouped = df.groupby(['name','type'])['count'].count().reset_index() 看起来像这样: name type count x a 32 x b 1111 x c 4214 我需要做的是获取这个并生成百分比,所以我会得到这样的结果(我意识到百分比是不正确的): 我能想到一些可能有意义的伪代码,但我还没能得到任何真正有效的东西 差不多 def g

我做了一个熊猫团员

grouped = df.groupby(['name','type'])['count'].count().reset_index()
看起来像这样:

name  type    count
x     a       32
x     b       1111
x     c       4214
我需要做的是获取这个并生成百分比,所以我会得到这样的结果(我意识到百分比是不正确的):

我能想到一些可能有意义的伪代码,但我还没能得到任何真正有效的东西

差不多

def getPercentage(df):
    for name in df: 
        total = 0
        where df['name'] = name:
            total = total + df['count'] 
            type_percent = (df['type'] / total) * 100
            return type_percent

df.apply(getPercentage)
有没有一个好方法可以让熊猫做到这一点?

试试:

df.loc[:,'grouped'] = df.groupby(['name','type'])['count'].count() / df.groupby(['name','type'])['count'].sum()

任何序列都可以通过如下方式传入参数“normalize=False”进行规范化(这比按计数进行偏差更简洁):

Series.value\u计数(normalize=True,sort=True,升序=False)
因此,它将类似于(这是一个系列,而不是一个数据帧):

或者,如果您使用groupby,您可以简单地执行以下操作:

total = grouped['count'].sum()
grouped['count'] = grouped['count']/total * 100

使用
交叉表
+
规范化

pd.crosstab(df.name,df.type,normalize='index').stack().reset_index()

你能提供一个简短的输入样本和给定样本的预期输出吗?
total = grouped['count'].sum()
grouped['count'] = grouped['count']/total * 100
pd.crosstab(df.name,df.type,normalize='index').stack().reset_index()