给定两个具有相交行的 Pandas 数据帧(df1 和 df2),任务是隔离df1 中不存在的行df2.
为了解决这个问题,我们可以从 df1 到 df2 执行左连接,确保消除 df2 中的重复项,从而确保 df1 的每一行仅与 df2 的一行连接df2.
df_all = df1.merge(df2.drop_duplicates(), on=['col1', 'col2'], how='left', indicator=True)
此左连接创建一个额外的列 _merge 指示起源
为了过滤 df1 独有的行,我们应用布尔条件:
df_filtered = df_all[df_all['_merge'] == 'left_only']
某些解决方案在检查每个值时出错列独立而不是考虑行的存在。例如,此解决方案:
(~df1.col1.isin(common.col1)) & (~df1.col2.isin(common.col2))
返回不正确的结果,因为它无法捕获值为 [3, 10] 的行,而该行通常不存在:
0 False 1 False 2 False 3 True 4 True 5 False dtype: bool
以上是如何识别一个 Pandas DataFrame 中存在但另一个中不存在的行?的详细内容。更多信息请关注PHP中文网其他相关文章!