Как использовать фильтр «НЕ В» в Pandas (с примерами)


Вы можете использовать следующий синтаксис для выполнения фильтра «НЕ В» в кадре данных pandas:

df[ ~ df['col_name']. isin (values_list)]

Обратите внимание, что значения в values_list могут быть либо числовыми значениями, либо символьными значениями.

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

Пример 1. Выполнение фильтра «НЕ ВХОД» с одним столбцом

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

import pandas as pd

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

#define list of teams we don't want
values_list = ['A', 'B']

#filter for rows where team name is not in list
df[ ~ df['team']. isin (values_list)]

 team points assists rebounds
6 C 25 9 9
7 C 29 4 12

И следующий код показывает, как фильтровать DataFrame pandas для строк, где столбец «точки» не содержит определенных значений:

import pandas as pd

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

#define list of values we don't want
values_list = [12, 15, 25]

#filter for rows where team name is not in list
df[ ~ df['team']. isin (values_list)]

 team points assists rebounds
3 B 14 9 6
4 B 19 12 6
5 B 23 9 5
7 C 29 4 12

Пример 2. Выполнение фильтра «НЕ В» с несколькими столбцами

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

import pandas as pd

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

#define list of teams we don't want
values_list = ['C', 'E']

#filter for rows where team name is not in one of several columns
df[ ~ df[['star_team', 'backup_team']]. isin (values_list).any (axis= 1 )] 

 star_team backup_team points assists rebounds
0 A B 25 5 11
1 A B 12 7 8
4 B D 19 12 6
5 B D 23 9 5

Обратите внимание, что мы отфильтровали каждую строку, где команды «C» или «E» появлялись либо в столбце «star_team», либо в столбце «backup_team».

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

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

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

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