문자열과 정수를 모두 포함하는 팬더 시리즈의 값을 확인할 때 혼란스러운 동작 [중복]

Jan 05 2021

dtype: object숫자와 문자가 모두 포함 된 팬더 시리즈 가 있습니다. 해당 시리즈에 특정 값이 있는지 확인하고 싶을 때 특정 값의 존재를 확인하는 방식에 혼란 스러웠습니다.

아래 예의 경우 직관적으로 예상 할 수 있습니다. 즉 'a', 시리즈 및 '1'. 또한 1AFAIK dtype: objectin pandas가 파이썬의 문자열 유형과 (대략?) 비교할 수 있기 때문에 (정수) 값 이 시리즈에 존재한다고 기대하지 않습니다 .

누구든지이 행동에 대한 설명이 있습니까?

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를 정의하면- s = pd.Series(['a',1,2], index=['a', 'b', 'c'])

그럼-

1 in s #False

'a' in s #True

그리고 그것은 가치 자체와는 아무런 관련이 없습니다.