이것은 이상하고 반 직관적 인 행동처럼 보입니다. 누구나 이것이 왜 이렇게 설계되었는지 설명 할 수 있습니까?팬더 시리즈와`in` 연산자
lkup = pd.Series({'fred':'Fred','amy':'Amy'})
for n in lkup:
print(n,' --> ',n in lkup)
>>>
Amy --> False
Fred --> False
왜 나에게
값 대신의 열쇠를주고있다
?
'fred' in lkup, 'amy' in lkup
>>>> True, True
물어 그 이유는이 실제로 내 프로그램을 엉망으로 밝혀졌다 있다는 것입니다 동안
df = pd.DataFrame([['fred',1,2,3],['amy',3,4,5],['john',5,6,7],['Fred',11,12,33]], columns=['name','c1','c2','c3'])
df
>>>
name c1 c2 c3
0 fred 1 2 3
1 amy 3 4 5
2 john 5 6 7
3 Fred 11 12 33
df.name.map(lkup)
>>>
0 Fred
1 Amy
2 NaN
3 NaN
큰 일련의 값에 DataFrame에서 매핑 값 - 예상대로 가입일 :
lkup.to_dict()
>>> {'amy': 'Amy', 'fred': 'Fred'}
하지만 난
df[df.name.isin('lkup')].name
>>> 3 Fred
을 수행 할 때
DataFrames를 사용할 때이 문제가 발생하지 않습니다.
for n in df:
print(n,' --> ',n in df)
>>>
name --> True
c1 --> True
c2 --> True
c3 --> True
이 모순 된 논리에 대한 이유는 무엇입니까?
반복은 값을 통해 반복합니다. DataFrame에 대한 반복은 열 이름을 반복합니다. – unutbu
'in'의 동작은보다 일관성이 있습니다 :'item in series'는'item in series.index'와 같고'df'의 item은'df.columns'의 item과 같습니다. – unutbu