#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
по какой-то причине не подумал.