Comment réparer KeyError dans Pandas (avec exemple)
Une erreur que vous pouvez rencontrer lors de l’utilisation de pandas est :
KeyError: 'column_name'
Cette erreur se produit lorsque vous tentez d’accéder à une colonne d’un DataFrame pandas qui n’existe pas.
Généralement, cette erreur se produit lorsque vous orthographiez simplement mal un nom de colonne ou incluez un espace accidentel avant ou après le nom de colonne.
L’exemple suivant montre comment corriger cette erreur dans la pratique.
Comment reproduire l’erreur
Supposons que nous créions le DataFrame pandas suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'points': [25, 12, 15, 14, 19, 23, 25, 29], 'assists': [5, 7, 7, 9, 12, 9, 9, 4], 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]}) #view DataFrame df points assists rebounds 0 25 5 11 1 12 7 8 2 15 7 10 3 14 9 6 4 19 12 6 5 23 9 5 6 25 9 9 7 29 4 12
Supposons ensuite que nous essayions d’imprimer les valeurs dans une colonne appelée « point » :
#attempt to print values in 'point' column print(df['point']) KeyError Traceback (most recent call last) /srv/conda/envs/notebook/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance) 3360 try: -> 3361 return self._engine.get_loc(casted_key) 3362 except KeyError as err: /srv/conda/envs/notebook/lib/python3.7/site-packages/pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc() /srv/conda/envs/notebook/lib/python3.7/site-packages/pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc() pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item() pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item() KeyError: 'point'
Puisqu’il n’y a pas de colonne « point » dans notre DataFrame, nous recevons un KeyError .
Comment réparer l’erreur
La façon de corriger cette erreur consiste simplement à nous assurer que nous épelons correctement le nom de la colonne.
Si nous ne sommes pas sûrs de tous les noms de colonnes dans le DataFrame, nous pouvons utiliser la syntaxe suivante pour imprimer chaque nom de colonne :
#display all column names of DataFrame print(df.columns.tolist()) ['points', 'assists', 'rebounds']
Nous pouvons voir qu’il y a une colonne appelée « points », nous pouvons donc corriger notre erreur en épelant correctement le nom de la colonne :
#print values in 'points' column print(df['points']) 0 25 1 12 2 15 3 14 4 19 5 23 6 25 7 29 Name: points, dtype: int64
Nous évitons une erreur car nous avons correctement orthographié le nom de la colonne.
Ressources additionnelles
Les didacticiels suivants expliquent comment corriger d’autres erreurs courantes en Python :
Comment réparer : les colonnes se chevauchent mais aucun suffixe n’est spécifié
Comment réparer : l’objet ‘numpy.ndarray’ n’a pas d’attribut ‘append’
Comment réparer : si vous utilisez toutes les valeurs scalaires, vous devez transmettre un index