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

Ajouter un commentaire

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