Pandas : Comment interroger le nom d’une colonne avec un espace
Vous pouvez utiliser la syntaxe suivante pour effectuer une requête pandas en utilisant un nom de colonne avec un espace :
df.query('`this column` == 20')
Notez que vous devez utiliser des guillemets ( ` ) dans la requête au lieu de guillemets.
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : colonne de requête dans Pandas DataFrame avec espace
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'], 'points scored' : [12, 20, 40, 20, 24, 10, 31]}) #view DataFrame print(df) team points scored 0 A 12 1 B 20 2 C 40 3 D 20 4 E 24 5 F 10 6 G 31
Supposons maintenant que nous souhaitions interroger les lignes où la colonne des points marqués est égale à 20.
Si nous utilisons la fonction query() avec des guillemets, nous recevrons une erreur :
#attempt to get rows where points scored column is equal to 20 df.query('"points scored" == 20') TypeError: argument of type 'int' is not iterable
À la place, nous devons utiliser la fonction query() avec des backticks :
#get rows where points scored column is equal to 20 df.query('`points scored` == 20') team points scored 1 B 20 3 D 20
La requête renvoie les deux lignes du DataFrame où la colonne de points marqués est égale à 20.
Notez que nous ne recevons aucune erreur non plus car nous avons utilisé des guillemets au lieu de guillemets dans la fonction query() .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :
Pandas : Comment filtrer les lignes en fonction de la longueur de la chaîne
Pandas : Comment supprimer des lignes en fonction de la condition
Pandas : Comment utiliser le filtre « NON IN »