Как использовать фильтр «не в» в pandas (с примерами)


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

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

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

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

Пример 1. Выполните фильтр «NON IN» для столбца.

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

 import pandas as pd

#createDataFrame
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

#createDataFrame
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. Выполните фильтр «NON IN» с несколькими столбцами.

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

 import pandas as pd

#createDataFrame
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:

Как использовать «Is Not Null» в Pandas
Как фильтровать DataFrame Pandas по значениям столбца
Как фильтровать строки Pandas DataFrame по дате
Как фильтровать DataFrame Pandas по нескольким условиям

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *