Как суммировать значения, сгруппированные по категориальному столбцу в pandas?

#python #pandas #aggregate

#python #pandas #агрегировать

Вопрос:

У меня есть данные, в которых есть категориальный столбец, который группирует данные, и другим столбцам это нравится в dataframe df .

 id      subid      value
1       10         1.5
1       20         2.5
1       30         7.0 
2       10         12.5
2       40         5
  

Мне нужен столбец, который имеет среднее значение для каждого subid в каждом id . Например df , может быть:

 id      subid      value     id_sum    proportion
1       10         1.5       11.0      0.136
1       20         2.5       11.0      0.227
1       30         7.0       11.0      0.636
2       10         12.5      17.5      0.714
2       40         5         17.5      0.285
  

Теперь я попытался получить столбец id_sum, выполнив:

 df['id_sum'] = df.groupby('id')['value'].sum()
  

Но, похоже, это работает не так, как хотелось бы. Моя конечная цель — получить proportion столбец. Каков правильный способ получить это?

Ответ №1:

поехали

 df['id_sum'] = df.groupby('id')['value'].transform('sum')
df['proportion'] = df['value'] / df['id_sum']
  

Комментарии:

1. вау, спасибо! это было просто. transform по какой-то причине не подумал.