使用一列(col3)上的均值聚合函数对两列(id和category)执行groupby之后,我会得到这样的信息:
col3
id category mean
345 A 12
B 2
C 3
D 4
Total 21
我想做的是添加一个名为percent的新列,在该列中我计算类别Total
中每个类别的百分比。
应该为每个id
单独完成此操作。
结果应该是这样的:
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的第一列。关于如何做到这一点的任何建议?
答案 0 :(得分:1)
使用get_level_values
过滤您的df,然后我们使用div
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
答案 1 :(得分:0)
这是我的建议:
df['mean'] = df['mean'] / df['mean'].sum()