Python 按自定义聚合函数分组
在对两列(id和category)执行groupby之后,使用列(col3)上的平均聚合函数,我得到如下结果:Python 按自定义聚合函数分组,python,pandas,group-by,aggregate-functions,Python,Pandas,Group By,Aggregate Functions,在对两列(id和category)执行groupby之后,使用列(col3)上的平均聚合函数,我得到如下结果: col3 id category mean 345 A 12 B 2 C 3 D
col3
id category mean
345 A 12
B 2
C 3
D 4
Total 21
col3
id category mean percentage
345 A 12 0.57
B 2 0.09
C 3 0.14
D 4 0.19
Total 21 1
我想做的是添加一个名为percentage(百分比)的新列,在该列中,我计算每个类别占类别总数的百分比。
对于每个id
,应分别执行此操作。
结果应该是这样的:
col3
id category mean
345 A 12
B 2
C 3
D 4
Total 21
col3
id category mean percentage
345 A 12 0.57
B 2 0.09
C 3 0.14
D 4 0.19
Total 21 1
显然,我希望对每个id都这样做,这是我完成groupby的第一列。有什么建议吗?这是我的建议:
df['mean']=df['mean']/df['mean'].sum()
s=df[df.index.get_level_values(level=1)!='Total'].sum(level=0)
df['percentage']=df.div(s,level=0,axis=1)
df
Out[422]:
mean percentage
id category
345 A 12 0.571429
B 2 0.095238
C 3 0.142857
D 4 0.190476
Total 21 1.000000
这不起作用,因为我需要对每个ID分别执行此操作。这样,你就可以考虑整个数据集了。