पंडों की श्रृंखला में मूल्यों की जाँच करते समय भ्रमित करने वाला व्यवहार जिसमें तार और पूर्णांक दोनों होते हैं [डुप्लिकेट]
मेरे पास एक पंडों की श्रृंखला 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
जवाब
जब आप क्वेरी 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
और इसका स्वयं मूल्यों से कोई लेना-देना नहीं है।