كيفية الإصلاح: خطأ القيمة: غير قادر على تحديد صف بأعمدة غير متطابقة
الخطأ الذي قد تواجهه عند استخدام الباندا هو:
ValueError : cannot set a row with mismatched columns
يحدث هذا الخطأ عند محاولة إضافة صف جديد إلى DataFrame الباندا ولكن عدد القيم في الصف الجديد لا يتطابق مع عدد الأعمدة في DataFrame الموجود.
يوضح المثال التالي كيفية تصحيح هذا الخطأ عمليًا.
كيفية إعادة إنتاج الخطأ
لنفترض أننا أنشأنا DataFrame الباندا التالية:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'], ' points ': [18, 22, 19, 14, 14, 11, 20, 28, 22], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4, 8], ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12, 9]}) #view DataFrame df team points assists rebounds 0 A 18 5 11 1 B 22 7 8 2 C 19 7 10 3 D 14 9 6 4 E 14 12 6 5 F 11 9 5 6 G 20 9 9 7:28 4 12 8 I 22 8 9
لنفترض الآن أننا نحاول إضافة صف جديد في نهاية DataFrame:
#define new row to append
new_team = ['I', 30]
#append row to DataFrame
df. loc [ len (df)] = new_team
#view updated DataFrame
df
ValueError : cannot set a row with mismatched columns
نتلقى خطأ ValueError لأن الصف الجديد الذي نحاول إضافته يحتوي على قيمتين فقط، لكن DataFrame الحالي يحتوي على أربعة أعمدة.
كيفية اصلاح الخطأ
أسهل طريقة لإصلاح هذا الخطأ هي استخدام الدالة append() لإضافة السطر الجديد في نهاية DataFrame، والذي سيملأ القيم المفقودة تلقائيًا بـ NaN:
يوضح بناء الجملة التالي كيفية استخدام هذه الوظيفة عمليًا:
#define new row to append new = ['J', 30] #append row to end of DataFrame df = df. append ( pd.Series (new,index= df.columns [: len (new)]), ignore_index= True ) #view updated DataFrame df team points assists rebounds 0 to 18 5.0 11.0 1 B 22 7.0 8.0 2 C 19 7.0 10.0 3 D 14 9.0 6.0 4 E 14 12.0 6.0 5 F 11 9.0 5.0 6 G 20 9.0 9.0 7:28 a.m. 4.0 12.0 8 I 22 8.0 9.0 9 D 30 NaN NaN
لاحظ أننا لا نتلقى أي ValueError وتمت إضافة السطر الجديد إلى نهاية DataFrame.
لاحظ أيضًا أن القيمتين المفقودتين في الصف الجديد تم ملؤهما ببساطة بقيم NaN.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في بايثون:
كيفية الإصلاح: تتداخل الأعمدة ولكن لم يتم تحديد أي لاحقة
كيفية الإصلاح: لا يحتوي الكائن “numpy.ndarray” على سمة “إلحاق”.
كيفية الإصلاح: إذا كنت تستخدم جميع القيم العددية، فستحتاج إلى تمرير فهرس