如何对多列进行分组并计算熊猫百分比

时间:2018-09-09 10:03:47

标签: python pandas pandas-groupby

我在熊猫中有以下数据框

  Date         Code       ID        Quantity
  16-08-2018   156        1         10 
  16-08-2018   156        2         10
  16-08-2018   156        3         10 
  16-08-2018   156        4         10
  17-08-2018   157        1         30
  17-08-2018   157        2         20 
  17-08-2018   157        3         30
  17-08-2018   157        4         20 

我想按Date and Code计算ID在总数量组中所占的百分比。我想要的数据框是

  Date         Code       ID        Quantity      Perc
  16-08-2018   156        1         10            25
  16-08-2018   156        2         10            25
  16-08-2018   156        3         10            25
  16-08-2018   156        4         10            25
  17-08-2018   157        1         30            30   
  17-08-2018   157        2         20            20
  17-08-2018   157        3         30            30
  17-08-2018   157        4         20            20

我怎么在熊猫里做?

1 个答案:

答案 0 :(得分:1)

GroupBy + transform'sum'一起使用:

g = df.groupby(['Date', 'Code'])['Quantity'].transform('sum')
df['Perc'] = df['Quantity'] / g * 100

结果:

         Date  Code  ID  Quantity  Perc
0  16-08-2018   156   1        10    25
1  16-08-2018   156   2        10    25
2  16-08-2018   156   3        10    25
3  16-08-2018   156   4        10    25
4  17-08-2018   157   1        30    30
5  17-08-2018   157   2        20    20
6  17-08-2018   157   3        30    30
7  17-08-2018   157   4        20    20