ВОПРОС:
У меня есть фрейм данных, который я импортирую из файла "csv" с пандами, который выглядит так (упрощенный пример):
id amount
1 50
1 10
1 5
2 10
2 15
2 25
2 40
Итак, идея состоит в том, чтобы суммировать суммы и добавить результат ко всем записям с одним и тем же идентификатором следующим образом:
id amount total
1 50 65
1 10 65
1 5 65
2 10 90
2 15 90
2 25 90
2 40 90
Таким образом, результирующий фрейм данных должен включать дополнительный столбец с общей суммой, соответствующей каждому идентификатору, но с сохранением исходного фрейма данных, чтобы это работало, невозможно иметь одну запись для каждого идентификатора с суммой.
Я работаю с пандами и манипулирую CSV-файлами.
Спасибо!






Используйте pandas.join
df.join(df.groupby('id').amount.sum(), rsuffix='_', on = 'id')
Вывод:
id amount amount_
0 1 50 65
1 1 10 65
2 1 5 65
3 2 10 90
4 2 15 90
5 2 25 90
6 2 40 90
Или даже лучше (спасибо Б-Б):
df.assign(total = df.groupby('id').amount.transform('sum'))
вывод
id amount total
0 1 50 65
1 1 10 65
2 1 5 65
3 2 10 90
4 2 15 90
5 2 25 90
6 2 40 90
Я пробовал путь jpp и тестировал кросс-таблицу, хе-хе. Мой мозг просто запрограммирован на это :С
Я имею в виду df.groupby('id').amount.transform('sum')
блин, так красиво. Теперь я начну делать это так. Спасибо ВБ :)
попробуй трансформировать :-)