Часто вам может быть интересно найти максимальное значение по группе в 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