通过遍历两列来获得比率

时间:2020-05-04 14:26:51

标签: python pandas dataframe

您好我的数据框如下

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

非常感谢您的帮助

1 个答案:

答案 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