पंडों की श्रृंखला में मूल्यों की जाँच करते समय भ्रमित करने वाला व्यवहार जिसमें तार और पूर्णांक दोनों होते हैं [डुप्लिकेट]

Jan 05 2021

मेरे पास एक पंडों की श्रृंखला dtype: objectहै जिसमें संख्या और वर्ण दोनों हैं। जब मैंने जांचना चाहा कि क्या उस श्रृंखला में एक निश्चित मूल्य मौजूद है तो मैं इस तरह भ्रमित हो गया कि एक निश्चित मूल्य के अस्तित्व की जाँच कैसे की जाती है।

नीचे दिए गए उदाहरण के लिए, मैं सहज रूप से उम्मीद करूंगा, कि 'a'श्रृंखला में और भी है '1'। इसके अलावा, मुझे उम्मीद नहीं है कि 1श्रृंखला में (पूर्णांक) मूल्य मौजूद है, क्योंकि dtype: objectपांडा में AFAIK अजगर के स्ट्रिंग प्रकार के साथ तुलना (लगभग) कर सकते हैं।

क्या किसी के पास इस व्यवहार के लिए स्पष्टीकरण है?

s = pd.Series(['a',1,2])

if 'a' in  s: 
    print('a is in s')
else:
    print('a is not in s')
if '1' in s:
    print('string 1 is in s')
else: 
    print('string 1 is not in s')
if 1 in s:
    print('integer 1 is in s')
else:
    print('integer 1 is not in s')

आउटपुट:

a is not in s
string 1 is not in s
integer 1 is in s

जवाब

4 TomRon Jan 05 2021 at 19:01

जब आप क्वेरी 1 in sकर रहे हैं तो आप वास्तव में पूछ रहे हैं कि क्या यह अंदर है s.index। ध्यान दें कि 0 in sयह भी सच होगा।

यदि आप निम्नलिखित तरीके से परिभाषित करते हैं - s = pd.Series(['a',1,2], index=['a', 'b', 'c'])

फिर -

1 in s #False

'a' in s #True

और इसका स्वयं मूल्यों से कोई लेना-देना नहीं है।