कैसे ठीक करें: [int64] प्रकार की सरणी और [bool] प्रकार के स्केलर के साथ "rand_" निष्पादित नहीं कर सकता


पाइथॉन में आपके सामने एक त्रुटि आ सकती है:

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

यह त्रुटि आम तौर पर तब होती है जब आप एकाधिक स्थितियों का उपयोग करके पांडा डेटाफ़्रेम को फ़िल्टर करने का प्रयास करते हैं लेकिन प्रत्येक व्यक्तिगत स्थिति के आसपास कोष्ठक का उपयोग करने में असमर्थ होते हैं।

निम्नलिखित उदाहरण दिखाता है कि व्यवहार में इस त्रुटि को कैसे ठीक किया जाए।

त्रुटि को पुन: उत्पन्न कैसे करें

मान लीजिए हमारे पास निम्नलिखित पांडा डेटाफ़्रेम हैं:

 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

अब मान लें कि हम डेटाफ़्रेम को केवल उन पंक्तियों को दिखाने के लिए फ़िल्टर करने का प्रयास करते हैं जहाँ टीम कॉलम “ए” के बराबर है और अंक कॉलम 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

ध्यान दें कि हम केवल उन पंक्तियों को दिखाने के लिए डेटाफ़्रेम को सफलतापूर्वक फ़िल्टर करने में सक्षम हैं जहाँ टीम ‘ए’ के बराबर है और पॉइंट 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

ध्यान दें कि हम एक बार फिर किसी भी त्रुटि से बच रहे हैं।

अतिरिक्त संसाधन

निम्नलिखित ट्यूटोरियल बताते हैं कि पांडा में अन्य सामान्य त्रुटियों को कैसे ठीक किया जाए:

कैसे ठीक करें: “पांडा” मॉड्यूल में “डेटाफ़्रेम” विशेषता नहीं है
कैसे ठीक करें: लेखन त्रुटि: प्लॉट करने के लिए कोई संख्यात्मक डेटा नहीं
पंडों में KeyError को कैसे ठीक करें

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *