Pandas : comment sélectionner des lignes en fonction des valeurs des colonnes
Vous pouvez utiliser l’une des méthodes suivantes pour sélectionner des lignes dans un DataFrame pandas en fonction des valeurs de colonne :
Méthode 1 : sélectionner les lignes où la colonne est égale à une valeur spécifique
df.loc[df['col1'] == value]
Méthode 2 : sélectionner les lignes où la valeur de la colonne se trouve dans la liste des valeurs
df.loc[df['col1'].isin([value1, value2, value3, ...])]
Méthode 3 : sélectionner des lignes en fonction de plusieurs conditions de colonnes
df.loc[(df['col1'] == value) & (df['col2'] < value)]
L’exemple suivant montre comment utiliser chaque méthode avec le DataFrame pandas suivant :
import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
'points': [5, 7, 7, 9, 12, 9, 9, 4],
'rebounds': [11, 8, 10, 6, 6, 5, 9, 12],
'blocks': [4, 7, 7, 6, 5, 8, 9, 10]})
#view DataFrame
df
team points rebounds blocks
0 A 5 11 4
1 A 7 8 7
2 B 7 10 7
3 B 9 6 6
4 B 12 6 5
5 C 9 5 8
6 C 9 9 9
7 C 4 12 10
Méthode 1 : sélectionner les lignes où la colonne est égale à une valeur spécifique
Le code suivant montre comment sélectionner chaque ligne du DataFrame où la colonne « points » est égale à 7 :
#select rows where 'points' column is equal to 7
df.loc[df['points'] == 7]
team points rebounds blocks
1 A 7 8 7
2 B 7 10 7
Méthode 2 : sélectionner les lignes où la valeur de la colonne se trouve dans la liste des valeurs
Le code suivant montre comment sélectionner chaque ligne du DataFrame où la colonne « points » est égale à 7, 9 ou 12 :
#select rows where 'points' column is equal to 7
df.loc[df['points'].isin([7, 9, 12])]
team points rebounds blocks
1 A 7 8 7
2 B 7 10 7
3 B 9 6 6
4 B 12 6 5
5 C 9 5 8
6 C 9 9 9
Méthode 3 : sélectionner des lignes en fonction de plusieurs conditions de colonnes
Le code suivant montre comment sélectionner chaque ligne du DataFrame où la colonne « équipe » est égale à « B » et où la colonne « points » est supérieure à 8 :
#select rows where 'team' is equal to 'B' and points is greater than 8
df.loc[(df['team'] == 'B') & (df['points'] > 8)]
team points rebounds blocks
3 B 9 6 6
4 B 12 6 5
Notez que seules les deux lignes où l’équipe est égale à « B » et où les « points » sont supérieurs à 8 sont renvoyées.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Comment sélectionner des lignes par index dans Pandas
Comment sélectionner des lignes uniques dans Pandas
Comment sélectionner les lignes où la valeur apparaît dans n’importe quelle colonne dans Pandas