pandas数据帧中的groupby和百分位数计算

时间:2017-05-10 08:39:56

标签: python pandas

我有一个像这样的数据框

name event  spending
abc   A       500
abc   B       300
abc   C       200
xyz   A       2000
xyz   D       1000

所以我需要一个groupby名称和事件并计算各自的百分位...所以输出应该像

name  event  spending_percentile
abc   A       50%
abc   B       30%
abc   C       20%
xyz   A       66.67%
xyz   D       33.33%

请指导如何在pandas Dataframe中执行此操作。

1 个答案:

答案 0 :(得分:2)

您似乎需要transform

df['spending_percentile'] = df['spending'].div(df.groupby('name')['spending']
                                                 .transform(sum)).mul(100)
print (df)
  name event  spending  spending_percentile
0  abc     A       500            50.000000
1  abc     B       300            30.000000
2  abc     C       200            20.000000
3  xyz     A      2000            66.666667
4  xyz     D      1000            33.333333