Comment sélectionner des lignes selon plusieurs conditions à l’aide de Pandas Loc
Vous pouvez utiliser les méthodes suivantes pour sélectionner les lignes d’un DataFrame pandas en fonction de plusieurs conditions :
Méthode 1 : sélectionner les lignes qui répondent à plusieurs conditions
df.loc[((df['col1'] == 'A') & (df['col2'] == 'G'))]
Méthode 2 : sélectionner les lignes qui répondent à l’une des plusieurs conditions
df.loc[((df['col1'] > 10) | (df['col2'] < 8))]
Les exemples suivants montrent comment utiliser chacune de ces méthodes en pratique avec le DataFrame pandas suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'position': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'], 'assists': [5, 7, 7, 9, 12, 9, 9, 4], 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]}) #view DataFrame df team position assists rebounds 0 A G 5 11 1 A G 7 8 2 A F 7 10 3 A F 9 6 4 B G 12 6 5 B G 9 5 6 B F 9 9 7 B F 4 12
Méthode 1 : sélectionner les lignes qui répondent à plusieurs conditions
Le code suivant montre comment sélectionner uniquement les lignes du DataFrame où l’équipe est égale à « A » et la position est égale à « G » :
#select rows where team is equal to 'A' and position is equal to 'G'
df.loc[((df['team'] == 'A') & (df['position'] == 'G'))]
team position assists rebounds
0 A G 5 11
1 A G 7 8
Il n’y avait que deux lignes dans le DataFrame qui remplissaient ces deux conditions.
Méthode 2 : sélectionner les lignes qui répondent à l’une des plusieurs conditions
Le code suivant montre comment sélectionner uniquement les lignes du DataFrame où les passes décisives sont supérieures à 10 ou où les rebonds sont inférieurs à 8 :
#select rows where assists is greater than 10 or rebounds is less than 8
df.loc[((df['assists'] > 10) | (df['rebounds'] < 8))]
team position assists rebounds
3 A F 9 6
4 B G 12 6
5 B G 9 5
Il n’y avait que trois lignes dans le DataFrame qui remplissaient ces deux conditions.
Remarque : Dans ces deux exemples, nous avons filtré les lignes en fonction de deux conditions, mais en utilisant les attributs & et | opérateurs, nous pouvons filtrer sur autant de conditions que nous le souhaitons.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Comment créer une nouvelle colonne basée sur une condition dans Pandas
Comment supprimer des lignes contenant une valeur spécifique dans Pandas
Comment supprimer les lignes en double dans Pandas