Hoe keyerror in panda's te repareren (met voorbeeld)
Een fout die u kunt tegenkomen bij het gebruik van panda’s is:
KeyError : 'column_name'
Deze fout treedt op wanneer u probeert toegang te krijgen tot een kolom van een Panda DataFrame die niet bestaat.
Deze fout treedt doorgaans op wanneer u een kolomnaam eenvoudigweg verkeerd spelt of per ongeluk een spatie vóór of na de kolomnaam opneemt.
Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt corrigeren.
Hoe de fout te reproduceren
Stel dat we de volgende panda’s DataFrame maken:
import pandas as pd #createDataFrame 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
Stel vervolgens dat we proberen de waarden af te drukken in een kolom met de naam „punt“:
#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 : 'dot'
Omdat er geen „punt“-kolom in ons DataFrame staat, ontvangen we een KeyError .
Hoe u de fout kunt oplossen
De manier om deze fout op te lossen, is door er eenvoudigweg voor te zorgen dat we de kolomnaam correct spellen.
Als we niet zeker zijn van alle kolomnamen in het DataFrame, kunnen we de volgende syntaxis gebruiken om elke kolomnaam af te drukken:
#display all column names of DataFrame print ( df.columns.tolist () ) ['points', 'assists', 'rebounds']
We kunnen zien dat er een kolom is met de naam „punten“, dus we kunnen onze fout corrigeren door de kolomnaam correct te spellen:
#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
We voorkomen een fout omdat we de kolomnaam correct hebben gespeld.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:
Oplossing: Kolommen overlappen elkaar, maar er is geen achtervoegsel opgegeven
Oplossing: Object ’numpy.ndarray‘ heeft geen ‚append‘-attribuut
Oplossing: als u alle scalaire waarden gebruikt, moet u een index doorgeven