Come utilizzare il filtro "not in" in panda (con esempi)


È possibile utilizzare la seguente sintassi per eseguire un filtro “NOT IN” in un DataFrame panda:

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

Tieni presente che i valori in Values_list possono essere valori numerici o valori di caratteri.

Gli esempi seguenti mostrano come utilizzare questa sintassi nella pratica.

Esempio 1: eseguire un filtro “NON IN” con una colonna

Il codice seguente mostra come filtrare un DataFrame panda per le righe in cui il nome di un team non è presente in un elenco di nomi:

 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

E il codice seguente mostra come filtrare un DataFrame panda per le righe in cui la colonna “punti” non contiene determinati valori:

 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

Esempio 2: eseguire un filtro “NON IN” con più colonne

Il codice seguente mostra come filtrare un DataFrame panda per le righe in cui determinati nomi di squadra non si trovano in una delle numerose colonne:

 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

Tieni presente che abbiamo filtrato ogni riga in cui apparivano le squadre “C” o “E” nella colonna “star_team” o nella colonna “backup_team”.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni di filtro comuni nei panda:

Come utilizzare “Non è nullo” in Panda
Come filtrare un Pandas DataFrame in base ai valori delle colonne
Come filtrare le righe Pandas DataFrame per data
Come filtrare un Pandas DataFrame su più condizioni

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *