我希望找到一种简单的方法来计算每个组中每个子类别的百分比。这是一个例子:
df = pd.DataFrame({'key': ['A', 'B', 'C', 'A', 'B', 'C'],
'data1': range(6),
'data2': ['A1', 'B1', 'C1', 'A2', 'B2', 'C2']},
columns = ['key', 'data1', 'data2'])
df.groupby(['key','data2'])['data1'].sum()
我想要做的是创建一个额外的列,显示相应类别中每个子类别(即A1等)的百分比(即A等)。例如,我想知道A1 / sum(A1 + A2)到C2 / sum(C1 + C2)的百分比。
最简单的方法是什么?
答案 0 :(得分:0)
请进一步澄清A1 /(A1 + A2)的百分比是什么意思,“data2”列是整数类型吗?
好的,我认为这应该适合你:
sums = df.groupby(['key', 'data2']).agg({'data1': 'sum'})
percentages = sums.groupby(level=0).apply(lambda x: 100 * x / float(x.sum()))