Pandas : extraire la valeur de la colonne en fonction d’une autre colonne
Vous pouvez utiliser la fonction query() dans pandas pour extraire la valeur dans une colonne en fonction de la valeur dans une autre colonne.
Cette fonction utilise la syntaxe de base suivante :
df.query("team=='A'")["points"]
Cet exemple particulier extraira chaque valeur de la colonne des points où la colonne de l’ équipe est égale à A.
Les exemples suivants montrent comment utiliser cette syntaxe 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'], 'points': [11, 28, 10, 26, 6, 25, 29, 12]}) #view DataFrame print(df) team position points 0 A G 11 1 A G 28 2 A F 10 3 A F 26 4 B G 6 5 B G 25 6 B F 29 7 B F 12
Exemple 1 : Extraire les valeurs de colonne en fonction d’une condition remplie
Le code suivant montre comment extraire chaque valeur de la colonne des points où la valeur de la colonne de l’équipe est égale à « A » :
#extract each value in points column where team is equal to 'A' df.query("team=='A'")["points"] 0 11 1 28 2 10 3 26 Name: points, dtype: int64
Cette fonction renvoie les quatre valeurs de la colonne des points où la valeur correspondante dans la colonne de l’ équipe est égale à « A ».
Exemple 2 : Extraire les valeurs de colonne en fonction de l’une des nombreuses conditions remplies
Le code suivant montre comment extraire chaque valeur de la colonne de points où la valeur de la colonne d’équipe est égale à « A » ou la valeur de la colonne de position est égale à « G » :
#extract each value in points column where team is 'A' or position is 'G' df.query("team=='A' | position=='G'")["points"] 0 11 1 28 2 10 3 26 4 6 5 25 Name: points, dtype: int64
Cette fonction renvoie les six valeurs de la colonne des points où la valeur correspondante dans la colonne de l’équipe est égale à « A » ou la valeur dans la colonne de position est égale à « G ».
Exemple 3 : extraire les valeurs de colonne en fonction de plusieurs conditions remplies
Le code suivant montre comment extraire chaque valeur de la colonne de points où la valeur de la colonne d’équipe est égale à « A » et la valeur de la colonne de position est égale à « G » :
#extract each value in points column where team is 'A' and position is 'G' df.query("team=='A' & position=='G'")["points"] 0 11 1 28 Name: points, dtype: int64
Cette fonction renvoie les deux valeurs dans la colonne des points où la valeur correspondante dans la colonne équipe est égale à « A » et la valeur dans la colonne position est égale à « G ».
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :
Pandas : comment sélectionner des colonnes en fonction de la condition
Pandas : supprimer des lignes en fonction de plusieurs conditions
Pandas : mettre à jour les valeurs des colonnes en fonction d’un autre DataFrame