พฤติกรรมที่สับสนเมื่อตรวจสอบค่าในชุดหมีแพนด้าซึ่งมีทั้งสตริงและจำนวนเต็ม [ซ้ำกัน]
ฉันมีชุดหมีแพนด้าdtype: object
ที่มีทั้งตัวเลขและตัวอักษร เมื่อฉันต้องการตรวจสอบว่ามีค่าบางค่าอยู่ในชุดข้อมูลนั้นหรือไม่ฉันก็สับสนกับวิธีการตรวจสอบการมีอยู่ของค่าหนึ่ง ๆ
สำหรับตัวอย่างด้านล่างฉันคาดหวังโดยสังหรณ์ใจนั่น'a'
คือในซีรีส์และ'1'
ด้วย นอกจากนี้ฉันไม่คาดหวังว่าค่า (จำนวนเต็ม) จะ1
มีอยู่ในชุดนี้เนื่องจาก AFAIK dtype: object
ในแพนด้าสามารถเทียบกับประเภทสตริงของ python ได้
ใครมีคำอธิบายสำหรับพฤติกรรมนี้หรือไม่?
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
เมื่อคุณกำลังสอบถาม1 in s
คุณกำลังถามว่ามีอยู่s.index
หรือไม่ โปรดทราบว่า0 in s
จะเป็น True ด้วย
หากคุณกำหนด s ด้วยวิธีต่อไปนี้ - s = pd.Series(['a',1,2], index=['a', 'b', 'c'])
แล้ว -
1 in s #False
'a' in s #True
และไม่มีส่วนเกี่ยวข้องกับค่านิยมในตัวเอง