您好我的数据框如下
Date Key y
1/2/2013 A 1
1/2/2013 B 2
1/2/2013 C 1
2/2/2013 A 1
2/2/2013 c 1
2/2/2013 B 3
我现在要创建一个用于给定日期(1/2/2013)的新列“比率”,键A的比率为y(A)/(y(A)+ y(B)+ y(C))是1 /(1 + 2 + 1),即0.25。我的最终df如下
Date Key y ratio
1/2/2013 A 1 0.25
1/2/2013 B 2 0.5
1/2/2013 C 1 0.25
2/2/2013 A 1 0.2
2/2/2013 c 1 0.2
2/2/2013 B 3 0.6
非常感谢您的帮助
答案 0 :(得分:2)
您可以使用groupby().transform('sum')
来计算组的总和,这只是一个简单的除法:
df['ratio'] = df['y']/df.groupby('Date')['y'].transform('sum')
输出:
Date Key y ratio
0 1/2/2013 A 1 0.25
1 1/2/2013 B 2 0.50
2 1/2/2013 C 1 0.25
3 2/2/2013 A 1 0.20
4 2/2/2013 c 1 0.20
5 2/2/2013 B 3 0.60