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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *