كيفية الإصلاح: لا يمكن تنفيذ "rand_" باستخدام مصفوفة من النوع [int64] وحجمية من النوع [bool]


الخطأ الذي قد تواجهه في بايثون هو:

 TypeError :Cannot perform 'rand_' with a dtyped [int64] array and scalar of type [bool]

يحدث هذا الخطأ عادةً عند محاولة تصفية 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

لنفترض الآن أننا نحاول تصفية DataFrame لإظهار الصفوف التي يساوي عمود الفريق فيها “A” فقط ويكون عمود النقاط أكبر من 15:

 #attempt to filter DataFrame
df. loc [df. team == ' A ' & df. points > 15 ]

TypeError :Cannot perform 'rand_' with a dtyped [int64] array and scalar of type [bool]

لقد تلقينا خطأً لأننا لم نضع أقواسًا حول كل شرط على حدة.

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

لإصلاح هذا الخطأ، نحتاج ببساطة إلى التأكد من وضع قوسين حول كل شرط على حدة عند تشغيل الفلتر:

 #filter DataFrame
df. loc [(df. team == ' A ') & (df. points > 15 )]

	team points assists rebounds
0 A 18 5 11
1 to 22 7 8
2 A 19 7 10

لاحظ أننا قادرون على تصفية DataFrame بنجاح لإظهار الصفوف التي يساوي فيها الفريق “A” وتكون النقاط أكبر من 15.

لاحظ أننا نحتاج أيضًا إلى وضع قوسين حول كل شرط على حدة إذا استخدمنا “|”. » المشغل بدلاً من ذلك:

 #filter rows where team is equal to 'A' or points is greater than 15
df. loc [( df.team == ' A ') | (df. points > 15 )]

team points assists rebounds
0 A 18 5 11
1 to 22 7 8
2 A 19 7 10
3 A 14 9 6
6 B 20 9 9
7 B 28 4 12

لاحظ أننا نتجنب مرة أخرى أي أخطاء.

مصادر إضافية

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

كيفية الإصلاح: لا تحتوي وحدة “pandas” على سمة “dataframe”.
كيفية الإصلاح: خطأ في الكتابة: لا توجد بيانات رقمية للرسم
كيفية إصلاح KeyError في الباندا

Add a Comment

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