Вы можете использовать следующий синтаксис для группировки строк в кадре данных pandas, а затем сортировать значения в группах:
df.sort_values(['var1',' var2'],ascending= False ). groupby('var1').head()
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: использование GroupBy и сортировка внутри групп в Pandas
Предположим, у нас есть следующий кадр данных pandas, который показывает продажи, совершенные в двух разных магазинах:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'store': ['B', 'B', 'A', 'A', 'B', 'B', 'A', 'A'],
'sales': [12, 25, 8, 14, 10, 20, 30, 30]})
#view DataFrame
print(df)
store sales
0 B 12
1 B 25
2 A 8
3 A 14
4 B 10
5 B 20
6 A 30
7 A 30
Мы можем использовать следующий синтаксис для группировки строк по столбцу магазина и сортировки в порядке убывания на основе столбца продаж :
#group by store and sort by sales values in descending order
df.sort_values(['store',' sales'],ascending= False ). groupby('store').head()
store sales
1 B 25
5 B 20
0 B 12
4 B 10
6 A 30
7 A 30
3 A 14
2 A 8
Обратите внимание, что мы также можем отбросить аргумент по возрастанию=ложь , чтобы отсортировать значения продаж в порядке возрастания:
#group by store and sort by sales values in ascending order
df.sort_values(['store',' sales']). groupby('store').head()
store sales
2 A 8
3 A 14
6 A 30
7 A 30
4 B 10
0 B 12
5 B 20
1 B 25
Обратите внимание, что функция head() отображает только первые 5 значений по группам.
Чтобы отобразить первые n значений по группам, просто используйте вместо этого head(n) .
Примечание.Полную документацию по операции GroupBy в pandas можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Pandas: как рассчитать совокупную сумму по группе
Pandas: как подсчитать уникальные значения по группам
Pandas: как рассчитать корреляцию по группе