2017-08-27 14 views
-4

私は2つのデータフレームを持っています.df1は100Kの行を含み、df2は600万の行を含んでいます。私は 'SoftDel ???'の値を修正したいdf1の 'id'がdf2で一致したときの列。コードは機能していますが、結果は間違っています。Pandasシリーズで "in"演算子を使用すると、正しくない結果が得られますか?

私はmergeを使用してこのタスクを完了しましたが、結果は満足ですが、なぜ下の結果が間違っているのかを知りたいのですか?

for x, y in df1.iterrows():
if y['id'] in df2['id']: df1.loc[x,'SoftDel???'] = 'No'

答えて

1

y['id']フロートです。しかし、df2['id']はシリーズです。 in演算子は、引数の1つとして系列を扱うようには設計されていません。

+0

ありがとうございましたが、これを試してエラーをスローしました。 AttributeError: 'int'オブジェクトに属性 'values'がありません。 –

+0

@AnkitSaini心配しないでください。単純なエラーです。私の編集をチェックしてください。 –

+0

@coldspeed:df1.iterrowsにおけるxの '、Y():\t \t場合DF2 [ 'ID'] ISIN(Y [ 'ID'])任意の(): \t \t df1.loc [X 、 'SoftDel ???'] = "いいえ" ' はこれを持っています:" TypeError:リストのようなオブジェクトのみがisin()に渡され、[int] "が渡されます このdf1.iterrowsのY xの '、():\t \t Y [ 'ID']もしISIN(DF2 [ 'ID'])任意の()。 \t \t df1.loc [X「SoftDel ??? '] = "いいえ" ' got:AttributeError:' int 'オブジェクトに属性がありません' isin ' –

関連する問題