Як виправити keyerror у pandas (з прикладом)
Помилка, з якою ви можете зіткнутися під час використання панд:
KeyError : 'column_name'
Ця помилка виникає, коли ви намагаєтеся отримати доступ до стовпця pandas DataFrame, який не існує.
Як правило, ця помилка виникає, коли ви просто неправильно вписуєте назву стовпця або випадково додаєте пробіл перед чи після назви стовпця.
У наступному прикладі показано, як виправити цю помилку на практиці.
Як відтворити помилку
Припустімо, що ми створюємо такі панди DataFrame:
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
Далі, припустимо, ми спробуємо надрукувати значення в стовпці під назвою «точка»:
#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'
Оскільки в нашому DataFrame немає стовпця «точка», ми отримуємо KeyError .
Як виправити помилку
Щоб виправити цю помилку, просто переконайтеся, що назва стовпця написана правильно.
Якщо ми не впевнені щодо всіх імен стовпців у DataFrame, ми можемо використати такий синтаксис, щоб надрукувати ім’я кожного стовпця:
#display all column names of DataFrame print ( df.columns.tolist () ) ['points', 'assists', 'rebounds']
Ми бачимо, що є стовпець під назвою “points”, тому ми можемо виправити нашу помилку, правильно написавши назву стовпця:
#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
Ми уникаємо помилки, тому що ми правильно написали назву стовпця.
Додаткові ресурси
У наступних посібниках пояснюється, як виправити інші типові помилки в Python:
Як виправити: стовпці перекриваються, але суфікс не вказано
Як виправити: об’єкт «numpy.ndarray» не має атрибута «додавання».
Як виправити: якщо ви використовуєте всі скалярні значення, вам потрібно передати індекс