Pandas : Comment filtrer les lignes en fonction des valeurs d’une liste



Vous pouvez utiliser la syntaxe de base suivante pour filtrer les lignes d’un DataFrame pandas qui contiennent une valeur dans une liste :

df[df['team'].isin(['A', 'B', 'D'])]

Cet exemple particulier filtrera le DataFrame pour qu’il contienne uniquement les lignes où la colonne d’équipe est égale à la valeur A , B ou D .

L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.

Exemple : filtrer le DataFrame Pandas en fonction des valeurs de la liste

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', 'A', 'B', 'B', 'C', 'C', 'D', 'D'],
                   '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    A      22        7         8
2    B      19        7        10
3    B      14        9         6
4    C      14       12         6
5    C      11        9         5
6    D      20        9         9
7    D      28        4        12

Supposons maintenant que nous souhaitions filtrer le DataFrame pour qu’il contienne uniquement les lignes dont la valeur dans la colonne d’équipe est égale à A , B ou D .

Nous pouvons utiliser la syntaxe suivante pour ce faire :

#filter for rows where team is equal to 'A', 'B' or 'D'
df[df['team'].isin(['A', 'B', 'D'])]

	team	points	assists	rebounds
0	A	18	5	11
1	A	22	7	8
2	B	19	7	10
3	B	14	9	6
6	D	20	9	9
7	D	28	4	12

Notez que le DataFrame filtré contient uniquement des lignes où la valeur dans la colonne d’équipe est égale à A , B ou D .

Notez également que vous pouvez utiliser la fonction isin() pour filtrer par valeurs numériques.

Par exemple, nous pouvons utiliser le code suivant pour filtrer les lignes où la colonne des assistances est égale à 5 ou 9 :

#filter for rows where assists is equal to 5 or 9
df[df['assists'].isin([5, 9])]


        team	points	assists	rebounds
0	A	18	5	11
3	B	14	9	6
5	C	11	9	5
6	D	20	9	9

Notez que le DataFrame filtré ne contient que des lignes dont la valeur dans la colonne assists est égale à 5 ou 9 .

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 *