كيفية الإصلاح في الباندا: القيمة الحقيقية للسلسلة غامضة
الخطأ الذي قد تواجهه في بايثون هو:
ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
a.any() or a.all().
يحدث هذا الخطأ عادةً عند محاولة تصفية Pandas DataFrame باستخدام الكلمات و و أو بدلاً من استخدام الأحرف & و | المشغلين.
يشرح هذا البرنامج التعليمي كيفية حل هذا الخطأ عمليًا.
كيفية إعادة إنتاج الخطأ
لنفترض أننا أنشأنا DataFrame الباندا التالية:
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
' points ': [18, 22, 19, 14, 14, 11, 20, 28],
' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})
#view DataFrame
print (df)
team points assists rebounds
0 A 18 5 11
1 to 22 7 8
2 A 19 7 10
3 A 14 9 6
4 B 14 12 6
5 B 11 9 5
6 B 20 9 9
7 B 28 4 12
لنفترض الآن أننا نحاول تصفية الصفوف التي يساوي فيها الفريق “A” وتكون النقاط أقل من 20:
#attempt to filter DataFrame
df[(df[' team '] == ' A ') and (df[' points '] < 20 )]
ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
a.any() or a.all().
أو لنفترض أننا نحاول تصفية الصفوف التي يساوي فيها الفريق “A” أو حيث تكون النقاط أقل من 20:
#attempt to filter DataFrame
df[(df[' team '] == ' A ') or (df[' points '] < 20 )]
ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
a.any() or a.all().
في كلا السيناريوهين، نتلقى خطأ يخبرنا أن قيمة الحقيقة للمتسلسلة غامضة.
كيفية إصلاح الخطأ
لتجنب هذا الخطأ عند التصفية، نحتاج إلى التأكد من أننا نستخدم & و | عناصر. المشغلين.
على سبيل المثال، يمكننا استخدام الكود التالي لتصفية الصفوف التي يساوي فيها الفريق “A” والنقاط أقل من 20:
#filter DataFrame
df[(df[' team '] == ' A ') & (df[' points '] < 20 )]
team points assists rebounds
0 A 18 5 11
2 A 19 7 10
3 A 14 9 6
أو يمكننا استخدام الكود التالي لتصفية الصفوف التي يساوي فيها الفريق “A” أو تكون النقاط أقل من 20:
#filter DataFrame
df[(df[' team '] == ' A ') | (df[' points '] < 20 )]
team points assists rebounds
0 A 18 5 11
1 to 22 7 8
2 A 19 7 10
3 A 14 9 6
4 B 14 12 6
5 B 11 9 5
في كلا السيناريوهين، لا نتلقى خطأ لأننا استخدمنا & و | عناصر. المشغلين.
ملاحظة : من المهم تضمين قوسين حول كل شرط على حدة عند تصفية إطار بيانات الباندا حسب شروط متعددة، وإلا فسوف تتلقى خطأ.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في بايثون:
كيفية الإصلاح: لا تحتوي وحدة “pandas” على سمة “dataframe”.
كيفية الإصلاح في Pandas:SettingWithCopyWarning
كيفية الإصلاح في Pandas: خطأ في الكتابة: لا توجد بيانات رقمية للتخطيط