Comment filtrer Pandas DataFrame à l’aide de colonnes booléennes



Vous pouvez utiliser les méthodes suivantes pour filtrer les lignes d’un DataFrame pandas en fonction des valeurs des colonnes booléennes :

Méthode 1 : filtrer le DataFrame en fonction d’une colonne booléenne

#filter for rows where value in 'my_column' is True
df.loc[df.my_column]

Méthode 2 : filtrer le DataFrame en fonction de plusieurs colonnes booléennes

#filter for rows where value in 'column1' or 'column2' is True
df.loc[df.column1 | df.column2]

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', 'B', 'C', 'D', 'E', 'F', 'G'],
                   'points': [18,20, 25, 40, 34, 32, 19],
                   'all_star': [True, False, True, True, True, False, False],
                   'starter': [False, True, True, True, False, False, False]})

#view DataFrame
print(df)

  team  points  all_star  starter
0    A      18      True    False
1    B      20     False     True
2    C      25      True     True
3    D      40      True     True
4    E      34      True    False
5    F      32     False    False
6    G      19     False    False

Exemple 1 : filtrer le DataFrame en fonction d’une colonne booléenne

Nous pouvons utiliser la syntaxe suivante pour filtrer le DataFrame pandas afin de contenir uniquement les lignes où la valeur dans la colonne all_star est True :

#filter for rows where 'all_star' is True
df.loc[df.all_star]

	team	points	all_star  starter
0	A	18	True	  False
2	C	25	True	  True
3	D	40	True	  True
4	E	34	True	  False

Notez que le DataFrame a été filtré pour contenir uniquement les lignes dont la valeur dans la colonne all_star est True.

Si vous souhaitez plutôt filtrer les lignes où all_star est False, tapez simplement un tilde ( ~ ) devant le nom de la colonne :

#filter for rows where 'all_star' is False
df.loc[~df.all_star]

        team	points	all_star  starter
1	B	20	False	  True
5	F	32	False	  False
6	G	19	False	  False

Le DataFrame a désormais été filtré pour contenir uniquement les lignes dont la valeur dans la colonne all_star est False.

Exemple 2 : filtrer le DataFrame en fonction de plusieurs colonnes booléennes

Nous pouvons utiliser la syntaxe suivante pour filtrer le DataFrame pandas afin de contenir uniquement les lignes où la valeur de la colonne all_star ou de la colonne de démarrage est True :

#filter for rows where 'all_star' or 'starter' is True
df.loc[df.all_star | df.starter]

        team	points	all_star  starter
0	A	18	True	  False
1	B	20	False	  True
2	C	25	True	  True
3	D	40	True	  True
4	E	34	True	  False

Notez que le DataFrame a été filtré pour contenir uniquement les lignes dont la valeur dans la colonne all_star ou starter est True.

Si vous souhaitez filtrer les lignes dont la valeur dans les colonnes all_star et starter est True, vous pouvez utiliser l’opérateur & au lieu de | opérateur:

#filter for rows where 'all_star' and 'starter' is True
df.loc[df.all_star & df.starter]

	team	points	all_star	starter
2	C	25	True	True
3	D	40	True	True

Maintenant que le DataFrame a été filtré pour contenir uniquement les lignes où la valeur dans les colonnes all_star et starter est True.

Connexes : La différence entre loc et iloc chez Pandas

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :

Pandas : sélectionnez des lignes de DataFrame à l’aide d’une série booléenne
Pandas : comment créer une colonne booléenne basée sur la condition
Pandas : Comment convertir des valeurs booléennes en valeurs entières

Ajouter un commentaire

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