Как фильтровать кадр данных Pandas по нескольким условиям


Часто вам может понадобиться отфильтровать кадр данных pandas по более чем одному условию. К счастью, это легко сделать с помощью логических операций.

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

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'C'],
 'points': [25, 12, 15, 14, 19],
 'assists': [5, 7, 7, 9, 12],
 'rebounds': [11, 8, 10, 6, 6]})

#view DataFrame 
df

 team points assists rebounds
0 A 25 5 11
1 A 12 7 8
2 B 15 7 10
3 B 14 9 6
4 C 19 12 6

Пример 1. Фильтрация по нескольким условиям с использованием оператора «И»

В следующем коде показано, как фильтровать DataFrame с помощью оператора and ( & ):

#return only rows where points is greater than 13 and assists is greater than 7
df[(df.points > 13) & (df.assists > 7)]

 team points assists rebounds
3 B 14 9 6
4 C 19 12 6

#return only rows where team is 'A' and points is greater than or equal to 15
df[(df.team == 'A') & (df.points >= 15)]


 team points assists rebounds
0 A 25 5 11

Пример 2. Фильтрация по нескольким условиям с использованием оператора «ИЛИ»

В следующем коде показано, как фильтровать DataFrame с помощью оператора или ( | ):

#return only rows where points is greater than 13 or assists is greater than 7
df[(df.points > 13) | (df.assists > 7)]


 team points assists rebounds
0 A 25 5 11
2 B 15 7 10
3 B 14 9 6
4 C 19 12 6

#return only rows where team is 'A' or points is greater than or equal to 15
df[(df.team == 'A') | (df.points >= 15)]

 team points assists rebounds
0 A 25 5 11
1 A 12 7 8
2 B 15 7 10
4 C 19 12 6

Пример 3. Фильтрация по нескольким условиям с использованием списка

В следующем коде показано, как фильтровать DataFrame, где значения строки находятся в некотором списке.

#define a list of values
filter_list = [12, 14, 15]

#return only rows where points is in the list of values
df[df.points.isin (filter_list)]

 team points assists rebounds
1 A 12 7 8
2 B 15 7 10
3 B 14 9 6

#define another list of values
filter_list2 = ['A', 'C']

#return only rows where team is in the list of values
df[df.team.isin (filter_list2)]


 team points assists rebounds
0 A 25 5 11
1 A 12 7 8
4 C 19 12 6

Вы можете найти больше руководств по пандам здесь .

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