Я хочу сгруппировать мой фрейм данных по двум столбцам, а затем отсортировать агрегированные результаты по группам.
In [167]:
df
Out[167]:
count job source
0 2 sales A
1 4 sales B
2 6 sales C
3 3 sales D
4 7 sales E
5 5 market A
6 3 market B
7 2 market C
8 4 market D
9 1 market E
In [168]:
df.groupby(['job','source']).agg({'count':sum})
Out[168]:
count
job source
market A 5
B 3
C 2
D 4
E 1
sales A 2
B 4
C 6
D 3
E 7
Теперь я хотел бы отсортировать столбец подсчета в порядке убывания в каждой из групп. И тогда возьмите только три верхних ряда. Чтобы получить что-то вроде:
count
job source
market A 5
D 4
B 3
sales E 7
C 6
B 4
order
не рекомендуется использоватьsort_values
вместо этогоВы также можете просто сделать это за один раз, выполнив сначала сортировку и используя голову, чтобы взять первые 3 из каждой группы.
источник
groupby
Гарантирует ли сохранение заказа?Вот еще один пример получения топ-3 по порядку сортировки и сортировки по группам:
источник
Попробуйте это вместо
простой способ сделать 'groupby' и сортировку по убыванию
источник
Если вам не нужно суммировать столбец, используйте ответ @ tvashtar. Если вам нужно подвести итог, вы можете использовать ответ @joris или этот, который очень похож на него.
источник