オプション1
indicator=True
A.merge(B, on='client_id', how='right', indicator=True) \
.query('_merge == "right_only"').drop('_merge', 1)
セットアップ
A = pd.DataFrame(dict(client_id=[1, 2, 3], valueA=[4, 5, 6]))
B = pd.DataFrame(dict(client_id=[3, 4, 5], valueB=[7, 8, 9]))
isnull()
機能を使用する必要があります
結果
以上説明
indicator=True
両方または、右、その行の結果が、左からのものであるかどうかを示すマージの結果に別の列を置きます。
A.merge(B, on='client_id', how='outer', indicator=True)
だから、私はちょうどその列を削除
right_only
指標をフィルタリングするために
query
を使用しています。
本当に
ないマージオプション2。あなたはその'client_id'
sがA
B.query('client_id not in @A.client_id')
または同じことを言って同等の方法(より高速な)になっていないところだけ
B[~B.client_id.isin(A.client_id)]
B
の行を引くに再びquery
を使用することができます私は 'on'引数の中にただ一つの 'client_id'しか必要ないと思います。複数の列を結合する場合は、リストを使用します。 2つのデータフレームの列を別々に指定するには、 'left_on'と' right_on'を使います。 – TheEspinosa