これは、奇妙で反抗的な動作のようです。なぜこれがこのように設計されているのか誰も説明できますか?なぜそれは私に値代わりの鍵を与えているパンダシリーズと `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
グレートシリーズ内の値へのデータフレームからマッピング値 - 期待されるようになったのは:
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