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