首页 >后端开发 >Python教程 >如何识别一个 Pandas DataFrame 中存在但另一个中不存在的行?

如何识别一个 Pandas DataFrame 中存在但另一个中不存在的行?

DDD
DDD原创
2024-12-14 08:20:15326浏览

How to Identify Rows Present in One Pandas DataFrame but Absent in Another?

识别 DataFrame 之间不同的行

问题陈述

给定两个具有相交行的 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn