Как выполнить функцию SUMIF в Pandas


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

#find sum of each column, grouped by one column
df.groupby('group_column'). sum ()
#find sum of one specific column, grouped by one column
df.groupby('group_column')['sum_column']. sum ()

В следующих примерах показано, как использовать этот синтаксис со следующим фреймом данных:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['a', 'a', 'b', 'b', 'b', 'c', 'c'],
 'points': [5, 8, 14, 18, 5, 7, 7],
 'assists': [8, 8, 9, 3, 8, 7, 4],
 'rebounds': [1, 2, 2, 1, 0, 4, 1]})

#view DataFrame
df

 team points assists rebounds
0 a 5 8 1
1 a 8 8 2
2 b 14 9 2
3 b 18 3 1
4 b 5 8 0
5 c 7 7 4
6 c 7 4 1

Пример 1. Выполнение функции СУММЕСЛИ для одного столбца

Следующий код показывает, как найти сумму очков для каждой команды:

df.groupby('team')['points']. sum ()

team
a 13
b 37
c 14

Это говорит нам:

  • Всего команда «а» набрала 13 очков.
  • Команда «Б» набрала в сумме 37 очков.
  • Команда «с» набрала в сумме 14 очков.

Пример 2. Выполнение функции СУММЕСЛИ для нескольких столбцов

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

df.groupby('team')[['points', 'rebounds']]. sum ()

 points rebounds
team 
a 13 3
b 37 3
c 14 5

Пример 3. Выполнение функции СУММЕСЛИ для всех столбцов

Следующий код показывает, как найти сумму всех столбцов во фрейме данных для каждой команды:

df.groupby('team'). sum ()

 points assists rebounds
team 
a 13 16 3
b 37 20 3
c 14 11 5

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

Как выполнить функцию COUNTIF в Pandas
Как подсчитать наблюдения по группе в Pandas
Как найти максимальное значение по группе в Pandas