Pandas: как использовать группу по с условием «где»
Самый простой способ использовать group by с условием Where в pandas — использовать функцию query() :
df. query (" team == 'A' "). groupby ([" position "])[" points "]. mean (). reset_index ()
В этом конкретном примере вычисляется среднее значение очков , сгруппированных по позиции , где команда равна «А» в некоторых DataFrame панд.
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: как использовать Group By с условием Where в Pandas
Предположим, у нас есть следующий DataFrame pandas, содержащий информацию о различных баскетболистах:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'F', 'G', 'G', 'F'], ' points ': [22, 14, 15, 10, 8, 29, 33, 18]}) #view DataFrame print (df) team position points 0 AG 22 1 AG 14 2 AF15 3 AF 10 4 AF 8 5 BG 29 6 BG 33 7 BF 18
Мы можем использовать следующий код для расчета среднего значения очков , сгруппированного по позиции , где команда равна «А»:
#calculate mean value of points, grouped by position, where team == 'A' df. query (" team == 'A' "). groupby ([" position "])[" points "]. mean (). reset_index () position points 0 F 11.0 1G 18.0
По результату мы видим:
- Среднее количество очков для игроков на позиции «F» в команде А составляет 11 .
- Среднее значение очков для игроков на позиции «G» Команды А составляет 18 .
Обратите внимание, что мы также можем использовать оператор & в функции query() для поиска строк, в которых выполняется несколько условий.
Например, следующий код показывает, как вычислить среднее значение очков , сгруппированное по позиции , где команда равна «A» , а позиция равна «G»:
#calculate mean value of points by position where team is 'A' and position is 'G' df. query (" team=='A' & position=='G' "). groupby ([" position "])[" points "]. mean (). reset_index () position points 0G 18.0
Из результата мы видим, что среднее значение очков для игроков на позиции «G» в команде А равно 18 .
Поскольку мы указали два условия в функции query() , использовались только те строки, которые удовлетворяли обоим условиям.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Как выполнить сумму GroupBy в Pandas
Как использовать Groupby и Plot в Pandas
Как посчитать уникальные значения с помощью GroupBy в Pandas