Pandas : sélectionnez des lignes de DataFrame à l’aide d’une série booléenne
Vous pouvez utiliser la syntaxe de base suivante pour sélectionner des lignes dans un DataFrame pandas en fonction des valeurs d’une série booléenne :
#define boolean series bools = pd.Series([True, False, True, True, False, False, False, True]) #select rows in DataFrame based on values in boolean series df[bools.values]
Cela vous permet de sélectionner chacune des lignes du DataFrame pandas où la valeur correspondante dans la série booléenne est True .
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : sélectionner des lignes dans Pandas DataFrame à l’aide d’une série booléenne
Supposons que nous ayons le DataFrame pandas suivant qui contient des informations sur divers joueurs de basket-ball :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], 'points': [18, 22, 19, 14, 14, 11, 20, 28], 'assists': [5, 7, 7, 9, 12, 9, 9, 4], 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]}) #view DataFrame print(df) team points assists rebounds 0 A 18 5 11 1 B 22 7 8 2 C 19 7 10 3 D 14 9 6 4 E 14 12 6 5 F 11 9 5 6 G 20 9 9 7 H 28 4 12
Nous pouvons utiliser la syntaxe suivante pour sélectionner toutes les lignes du DataFrame où la valeur correspondante dans une série booléenne est True :
#define boolean series bools = pd.Series([True, False, True, True, False, False, False, True]) #select rows in DataFrame based on values in boolean series df[bools.values] team points assists rebounds 0 A 18 5 11 2 C 19 7 10 3 D 14 9 6 7 H 28 4 12
Notez que les seules lignes renvoyées sont celles pour lesquelles la valeur correspondante dans la série booléenne est True .
Notez également que vous pouvez utiliser la syntaxe suivante pour sélectionner uniquement les lignes de la colonne « points » du DataFrame où la valeur correspondante dans la série booléenne est True .
#define boolean series bools = pd.Series([True, False, True, True, False, False, False, True]) #select rows in points column based on values in boolean series df['points'][bools.values] 0 18 2 19 3 14 7 28 Name: points, dtype: int64
Notez que les seules lignes renvoyées par la colonne « points » sont celles où la valeur correspondante dans la série booléenne est True .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :
Comment filtrer les lignes en fonction de la longueur de la chaîne dans Pandas
Comment sélectionner des lignes sans valeurs NaN dans Pandas
Comment sélectionner des lignes en fonction des valeurs de colonne dans Pandas