Как найти максимальное значение по группе в Pandas


Часто вам может быть интересно найти максимальное значение по группе в pandas DataFrame.

К счастью, это легко сделать с помощью функций groupby() и max() со следующим синтаксисом:

df.groupby('column_name'). max ()

В этом руководстве объясняется несколько примеров того, как использовать эту функцию на практике, используя следующие Pandas DataFrame:

import pandas as pd

#create pandas DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'B', 'C', 'C'],
 'points':[24, 23, 27, 11, 14, 8, 13],
 'rebounds': [11, 8, 7, 6, 6, 5, 12]})

#display DataFrame
print(df)

 team points rebounds
0 A 24 11
1 A 23 8
2 B 27 7
3 B 11 6
4 B 14 6
5 C 8 5
6 C 13 12

Пример 1: максимальное значение нескольких столбцов, сгруппированных по одной переменной

В следующем коде показано, как найти максимальное значение нескольких столбцов, сгруппированных по одной переменной в DataFrame:

#find max values of points and rebounds, grouped by team
df.groupby('team'). max().reset_index()


 team points rebounds
0 A 24 11
1 B 27 7
2 C 13 12

Из вывода мы видим, что:

  • Команда А имеет максимальное количество очков , равное 24, и максимальное значение подборов , равное 11.
  • Команда Б имеет максимальное значение очков 27 и максимальное значение подборов 7.
  • Команда C имеет максимальное значение очков 13 и максимальное значение подборов 12.

Обратите внимание, что мы использовали функцию reset_index() , чтобы убедиться, что индекс соответствует индексу в исходном DataFrame.

Пример 2. Максимальное значение одного столбца, сгруппированного по одной переменной

Следующий код показывает, как найти максимальное значение только одного столбца, сгруппированного по одной переменной:

#find max value of points, grouped by team
df.groupby('team')['points']. max().reset_index()

 team points
0 A 24
1 B 27
2 C 13

Пример 3. Сортировка по максимальному значению

Мы также можем использовать функцию sort_values() для сортировки максимальных значений.

Мы можем указать по возрастанию = False для сортировки от наибольшего к наименьшему:

#find max value by team, sort descending
df.groupby('team')['points']. max().reset_index(). sort_values(['points'], ascending= False )


 team points
1 B 27
0 A 24
2 C 13

Или мы можем указать по возрастанию=True для сортировки от наименьшего к наибольшему:

#find max value by team, sort ascending 
df.groupby('team')['points']. max().reset_index(). sort_values(['points'], ascending= True ) 

 team points
2 C 13
0 A 24
1 B 27

Дополнительные ресурсы

Как рассчитать сумму столбцов в Pandas
Как рассчитать среднее значение столбцов в Pandas
Как найти максимальное значение столбцов в Pandas