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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert