【发布时间】:2019-02-08 17:58:15
【问题描述】:
设置
我有 2 个 pandas dfs(df1 和 df2),其中包含一些重叠行和一些非重叠行。
两个 dfs 都有 order_id 和 shop 列。
现在,如果 df1 中的行与 df2 中的任意行匹配 order_id 和 shop 的组合,则应从 df1 中删除该行。如果此行与order_id 和shop 上的df2 中的任何行都不匹配,则应保留它。
示例
df2 是这样的,
order_id shop
0 12345 'NL'
1 45678 'FR'
2 12345 'DE'
3 34567 'NL'
现在如果df1 这样,
order_id shop
0 12345 'NL'
1 45678 'FR'
那么 df1 应该返回空。
但是如果df1这样的话,
order_id shop
0 12345 'NL'
1 99999 'FR'
2 12345 'UK'
那么df1 应该返回,
order_id shop
0 99999 'FR'
1 12345 'UK'
代码
我创造了一条怪异的线,然后并没有真正起作用......
到目前为止,我有,
result_df = df1[(~df1['order_id'].astype(str).isin(df2['order_id'].astype(str)))]
我该如何解决这个问题?
【问题讨论】: