Как выполнить функцию 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.