कैसे ठीक करें: वैल्यूएरर: na/nan मान वाले गैर-बूलियन सरणी के साथ मास्क करने में असमर्थ


पांडा का उपयोग करते समय आपको एक त्रुटि का सामना करना पड़ सकता है:

 ValueError : Cannot mask with non-boolean array containing NA / NaN values

यह त्रुटि आम तौर पर तब होती है जब आप पांडा डेटाफ़्रेम में पंक्तियाँ ढूंढने का प्रयास कर रहे होते हैं जिनमें एक विशेष स्ट्रिंग होती है, लेकिन आप जिस कॉलम को खोज रहे हैं उसमें NaN मान हैं।

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

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

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

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B'],
                   ' position ': ['Guard', 'Guard', np. nan , 'Guard', 'Forward'],
                   ' points ': [22, 28, 14, 13, 19]})

#view DataFrame
print (df)

  team position points
0 A Guard 22
1 A Guard 28
2 A NaN 14
3 B Guard 13
4 B Forward 19

अब मान लीजिए कि हम डेटाफ़्रेम में सभी पंक्तियों तक पहुँचने का प्रयास करते हैं जहाँ स्थिति कॉलम में स्ट्रिंग “गार्ड” है:

 #access all rows where position column contains 'Guard'
df[df[' position ']. str . contains (' Guard ')]

ValueError : Cannot mask with non-boolean array containing NA / NaN values

हमें एक त्रुटि प्राप्त होती है क्योंकि स्थिति कॉलम में NaN मान है।

त्रुटि को कैसे ठीक करें

इस त्रुटि से बचने के लिए, बस str.contains() फ़ंक्शन में na=False तर्क का उपयोग करें:

 #access all rows where position column contains 'Guard', ignore NaN
df[df[' position ']. str . contains (' Guard ', na= False )]

        team position points
0 A Guard 22
1 A Guard 28
3 B Guard 13

इस बार हम बिना किसी त्रुटि के स्थिति कॉलम में “गार्ड” वाली सभी पंक्तियों तक पहुंच सकते हैं।

इस त्रुटि से बचने का दूसरा तरीका .fillna(False) का इस प्रकार उपयोग करना है:

 #access all rows where position column contains 'Guard', ignore NaN
df[df[' position ']. str . contains (' Guard '). fillna ( False )]

        team position points
0 A Guard 22
1 A Guard 28
3 B Guard 13

एक बार फिर हम स्थिति कॉलम में “गार्ड” वाली सभी पंक्तियों तक बिना किसी त्रुटि के पहुंच सकते हैं।

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

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

पंडों में KeyError को कैसे ठीक करें
कैसे ठीक करें: वैल्यूएरर: फ्लोट NaN को int में बदलने में असमर्थ
कैसे ठीक करें: वैल्यूएरर: ऑपरेंड को आकृतियों के साथ प्रसारित नहीं किया जा सका

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

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