Как агрегировать две колонки и сохранить колонку с датой?
Похожая проблема, однако необходимо агрегировать не одну, а две колонки + сохранить колонку даты.
Пример:
Fruit Date Name Number Summ
Apples 10/6/2016 Bob 7 70
Apples 10/6/2016 Bob 8 80
Apples 10/6/2016 Mike 9 90
Apples 10/7/2016 Steve 10 100
Apples 10/7/2016 Bob 1 20
Oranges 10/7/2016 Bob 2 10
Oranges 10/6/2016 Tom 15 75
Oranges 10/6/2016 Mike 57 285
Oranges 10/6/2016 Bob 65 325
Oranges 10/7/2016 Tony 1 5
Grapes 10/7/2016 Bob 1 1
Grapes 10/7/2016 Tom 87 87
Grapes 10/7/2016 Bob 22 22
Grapes 10/7/2016 Bob 12 12
Grapes 10/7/2016 Tony 15 15
Ожидаемый результат:
Fruit Date Name Number Summ
Apples 10/6/2016 Bob 15 150
Apples 10/7/2016 Bob 1 20
...
Привязываться к стоимости не следует, поскольку пропорция количество-цена не всегда сохраняется.
Пробовал так, но не получилось:
df.groupby(['Fruit', 'Date', 'Name'])['Number', 'Summ'].agg('sum').reset_index()
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
не совсем понятно в чем именно проблема - по-моему все работает именно так как должно работать, особенно если расположить столбцы при группировке в нужном порядке:
In [8]: df.groupby(['Name','Fruit', 'Date'])[['Number', 'Summ']].sum().reset_index()
Out[8]:
Name Fruit Date Number Summ
0 Bob Apples 2016-10-06 15 150
1 Bob Apples 2016-10-07 1 20
2 Bob Grapes 2016-10-07 35 35
3 Bob Oranges 2016-10-06 65 325
4 Bob Oranges 2016-10-07 2 10
5 Mike Apples 2016-10-06 9 90
6 Mike Oranges 2016-10-06 57 285
7 Steve Apples 2016-10-07 10 100
8 Tom Grapes 2016-10-07 87 87
9 Tom Oranges 2016-10-06 15 75
10 Tony Grapes 2016-10-07 15 15
11 Tony Oranges 2016-10-07 1 5