Pandas : comment utiliser isin pour plusieurs colonnes
Vous pouvez utiliser les méthodes suivantes avec la fonction pandas isin() pour filtrer en fonction de plusieurs colonnes dans un pandas DataFrame :
Méthode 1 : filtrer lorsque plusieurs colonnes sont égales à des valeurs spécifiques
df = df[df[['team', 'position']].isin(['A', 'Guard']).all(axis=1)]
Cet exemple particulier filtre le DataFrame pour les lignes où la colonne d’équipe est égale à « A » et la colonne de position est égale à « Guard ».
Méthode 2 : filtrer où au moins une colonne est égale à une valeur spécifique
df = df[df[['team', 'position']].isin(['A', 'Guard']).any(axis=1)]
Cet exemple particulier filtre le DataFrame pour les lignes où la colonne d’équipe est égale à « A » ou la colonne de position est égale à « Guard ».
Les exemples suivants montrent comment utiliser chaque méthode en pratique avec le DataFrame pandas suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'position': ['Guard', 'Guard', 'Forward', 'Forward', 'Guard', 'Guard', 'Forward', 'Forward'], 'points': [11, 18, 10, 22, 26, 35, 19, 12]}) #view DataFrame print(df) team position points 0 A Guard 11 1 A Guard 18 2 A Forward 10 3 A Forward 22 4 B Guard 26 5 B Guard 35 6 B Forward 19 7 B Forward 12
Exemple 1 : filtrer où plusieurs colonnes sont égales à des valeurs spécifiques
Nous pouvons utiliser la syntaxe suivante pour filtrer le DataFrame afin de contenir uniquement les lignes où la colonne d’équipe est égale à « A » et la colonne de position est égale à « Guard ».
#filter rows where team column is 'A' and position column is 'Guard' df = df[df[['team', 'position']].isin(['A', 'Guard']).all(axis=1)] #view filtered DataFrame print(df) team position points 0 A Guard 11 1 A Guard 18
Notez que seules les lignes où la colonne d’équipe est égale à « A » et la colonne de position est égale à « Guard » restent dans le DataFrame filtré.
Exemple 2 : filtre où au moins une colonne est égale à une valeur spécifique
Nous pouvons utiliser la syntaxe suivante pour filtrer le DataFrame afin de contenir uniquement les lignes où la colonne d’équipe est égale à « A » ou la colonne de position est égale à « Guard ».
#filter rows where team column is 'A' or position column is 'Guard' df = df[df[['team', 'position']].isin(['A', 'Guard']).any(axis=1)] #view filtered DataFrame print(df) team position points 0 A Guard 11 1 A Guard 18 2 A Forward 10 3 A Forward 22 4 B Guard 26 5 B Guard 35
Notez que seules les lignes où la colonne d’équipe est égale à « A » ou la colonne de position est égale à « Guard » restent dans le DataFrame filtré.
Remarque : Vous pouvez trouver la documentation complète de la fonction pandas isin() ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :
Pandas : Comment ajouter un filtre au tableau croisé dynamique
Pandas : Comment filtrer « Ne contient pas »
Pandas : comment filtrer les lignes contenant une chaîne spécifique