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 »

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *