Как сгруппировать несколько столбцов и рассчитать процент в пандах - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть следующий датафрейм в пандах

  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. Мой желаемый фрейм данных будет

  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 голосов
/ 09 сентября 2018

Использование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...