Comment utiliser « PAS IN » Filtrer dans Pandas (avec exemples)
Vous pouvez utiliser la syntaxe suivante pour effectuer un filtre « NOT IN » dans un DataFrame pandas :
df[~df['col_name'].isin(values_list)]
Notez que les valeurs dans Values_list peuvent être des valeurs numériques ou des valeurs de caractères.
Les exemples suivants montrent comment utiliser cette syntaxe dans la pratique.
Exemple 1 : Effectuer un filtre « NON IN » avec une colonne
Le code suivant montre comment filtrer un DataFrame pandas pour les lignes où le nom d’une équipe ne figure pas dans une liste de noms :
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
Et le code suivant montre comment filtrer un DataFrame pandas pour les lignes où la colonne « points » ne contient pas certaines valeurs :
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
Exemple 2 : Effectuer un filtre « NON IN » avec plusieurs colonnes
Le code suivant montre comment filtrer un DataFrame pandas pour les lignes où certains noms d’équipe ne figurent pas dans l’une des plusieurs colonnes :
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
Notez que nous avons filtré chaque ligne où les équipes « C » ou « E » apparaissaient dans la colonne « star_team » ou dans la colonne « backup_team ».
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations de filtrage courantes dans les pandas :
Comment utiliser « Is Not Null » dans Pandas
Comment filtrer un DataFrame Pandas par valeurs de colonne
Comment filtrer les lignes Pandas DataFrame par date
Comment filtrer un DataFrame Pandas sur plusieurs conditions