كيفية الإصلاح: طول القيم لا يتطابق مع طول الفهرس


الخطأ الذي قد تواجهه عند استخدام الباندا هو:

 ValueError: Length of values does not match length of index

يحدث هذا الخطأ عند محاولة تعيين مصفوفة من قيم NumPy لعمود جديد في pandas DataFrame، ولكن طول المصفوفة لا يتطابق مع الطول الحالي للفهرس.

يوضح المثال التالي كيفية تصحيح هذا الخطأ عمليًا.

كيفية إعادة إنتاج الخطأ

لنفترض أن لدينا DataFrame الباندا التالية:

 import pandas as pd

#define DataFrame
df = pd. DataFrame ({' points ': [25, 12, 15, 14],
                   ' assists ': [5, 7, 13, 12]})

#view DataFrame
print (df)

   assist points
0 25 5
1 12 7
2 15 13
3 14 12

لنفترض الآن أننا نحاول إضافة عمود جديد يسمى “الارتدادات” كمصفوفة NumPy:

 import numpy as np

#attempt to add 'rebounds' column
df[' rebounds '] = np. array ([3, 3, 7])

ValueError : Length of values (3) does not match length of index (4)

نتلقى خطأ ValueError لأننا نحاول إضافة مصفوفة NumPy بطول 3 إلى DataFrame الذي يحتوي على فهرس بطول 4 .

كيفية إصلاح الخطأ

أسهل طريقة لإصلاح هذا الخطأ هي ببساطة إنشاء عمود جديد باستخدام سلسلة الباندا بدلاً من مصفوفة NumPy.

افتراضيًا، إذا كان طول سلسلة الباندا لا يتوافق مع طول مؤشر DataFrame، فسيتم إدخال قيم NaN:

 #create 'rebounds' column
df[' rebounds '] = pd. Series ([3, 3, 7])

#view updated DataFrame
df

	points assists rebounds
0 25 5 3.0
1 12 7 3.0
2 15 13 7.0
3 14 12 NaN

باستخدام سلسلة الباندا، يمكننا بنجاح إضافة عمود “المرتدات” ويتم ملء القيم المفقودة ببساطة بـ NaN.

لاحظ أنه يمكننا تحويل قيم NaN بسرعة إلى قيمة أخرى (مثل الصفر) باستخدام طريقة fillna() كما يلي:

 #fill in NaN values with zero
df = df. fillna (0)

#view updated DataFrame
df

points assists rebounds
0 25 5 3.0
1 12 7 3.0
2 15 13 7.0
3 14 12 0.0

لاحظ أنه تم تحويل قيمة NaN إلى صفر.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في بايثون:

كيفية إصلاح KeyError في الباندا
كيفية الإصلاح: خطأ القيمة: غير قادر على تحويل float NaN إلى int
كيفية الإصلاح: خطأ في القيمة: لا يمكن بث المعاملات بالأشكال

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *