كيفية إصلاح keyerror في pandas (مع مثال)
الخطأ الذي قد تواجهه عند استخدام الباندا هو:
KeyError : 'column_name'
يحدث هذا الخطأ عند محاولة الوصول إلى عمود من الباندا 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']
يمكننا أن نرى أن هناك عمودًا يسمى “النقاط”، لذا يمكننا تصحيح خطأنا عن طريق كتابة اسم العمود بشكل صحيح:
#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
نحن نتجنب الخطأ لأننا كتبنا اسم العمود بشكل صحيح.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في بايثون:
كيفية الإصلاح: تتداخل الأعمدة ولكن لم يتم تحديد أي لاحقة
كيفية الإصلاح: لا يحتوي الكائن “numpy.ndarray” على سمة “إلحاق”.
كيفية الإصلاح: إذا كنت تستخدم جميع القيم العددية، فستحتاج إلى تمرير فهرس