本文介绍使用 pandas 的 merge + indicator 参数实现“反连接(anti-join)”,快速定位两表中基于主键(如 id)匹配但关键字段(如 value1/value2)不一致的行,避免逐行遍历,兼顾性能与可读性。
在数据比对、ETL 校验或变更检测等场景中,常需找出两个结构相似的 DataFrame 中,按某主键(如 'ID')对齐后,特定业务列(如 'Value1', 'Value2')值不一致的记录。注意:我们忽略其他列(如 'Date')的差异,仅聚焦于目标字段的语义一致性。
直接使用 df1.equals(df2) 或 df1.compare(df2) 不适用——前者要求索引、列、值完全一致;后者需同形 DataFrame 且默认对所有列逐元素比较。更优解是利用 Pandas 的 merge(..., indicator=True) 配合逻辑筛选,模拟数据库中的「反连接」操作。
核心思路:将 ID 作为连接键,同时把待比对列(Value1, Value2)也纳入 on 参数,这样只有当 ID、Value1、Value2 三者完全一致时才视为匹配行;其余情况即为差异行。再通过 _merge 标识区分来源,精准提取“仅存在于左表”的不匹配项,并进一步约束其 ID 必须在右表中存在(排除 df1 独有 ID)。
import pandas as pd
df1 = pd.DataFrame({
'ID': ['A', 'B', 'C', 'D', 'E'],
'Date': ['2025-01-01', '2025-01-02', '2025-01-03', '2025-01-04', '2025-01-05'],
'Value1': [1, 2, 3, 4, 5],
'Value2': [5, 6, 7, 8, 9]
})
df2 = pd.DataFrame({
'ID': ['A', 'B', 'C', 'D'],
'Date': ['2025-01-30', '2025-01-30', '2025-01-30', '2025-01-30'],
'Value1': [1, 2,
7, 4],
'Value2': [5, 6, 7, 9]
})
# 步骤:外连接(ID + Value1 + Value2 三字段联合匹配)
merged = df1.merge(df2, how='outer', on=['ID', 'Value1', 'Value2'], indicator=True)
# 提取仅在 df1 中存在、且其 ID 同时存在于 df2 的行 → 即 ID 相同但 Value1/Value2 不同
diff_rows = merged[merged['_merge'] == 'left_only'].drop('_merge', axis=1)
diff_rows = diff_rows[diff_rows['ID'].isin(df2['ID'])]
print("ID 相同但 Value1/Value2 不一致的行(来自 df1):")
print(diff_rows)输出:
ID 相同但 Value1/Value2 不一致的行(来自 df1): ID Date Value1 Value2 2 C 2025-01-03 3 7 3 D 2025-01-04 4 8
✅ 结果正确捕获了 ID='C'(df1: Value1=3 vs df2: Value1=7)和 ID='D'(df1: Value2=8 vs df2: Value2=9)。
综上,利用 merge 的 _merge 指标配合逻辑子集筛选,是 Pandas 中识别键值对差异的简洁、高效、可维护的标准实践。
# app
# 键值对
# 隐式转换
# pandas
# 数据类型
# date
# Lambda
# 数据库
# etl
# 比对
# 主键
# 进阶
# 遍历
# 只需
# 均为
# 适用于
# 约为
# 时才
# 即为
相关文章:
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
如何在万网开始建站?分步指南解析
如何在香港免费服务器上快速搭建网站?
网站制作服务平台,有什么网站可以发布本地服务信息?
如何配置IIS站点权限与局域网访问?
北京网站制作网页,网站升级改版需要多久?
广州商城建站系统开发成本与周期如何控制?
网站制作员失业,怎样查看自己网站的注册者?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
建站org新手必看:2024最新搭建流程与模板选择技巧
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
Android滚轮选择时间控件使用详解
如何快速重置建站主机并恢复默认配置?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
建站之星如何快速更换网站模板?
代购小票制作网站有哪些,购物小票的简要说明?
网站制作说明怎么写,简述网页设计的流程并说明原因?
网站图片在线制作软件,怎么在图片上做链接?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
如何在宝塔面板中创建新站点?
如何在云虚拟主机上快速搭建个人网站?
建站之星如何快速解决建站难题?
公司网站的制作公司,企业网站制作基本流程有哪些?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
临沂网站制作公司有哪些,临沂第四中学官网?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
建站之星如何实现PC+手机+微信网站五合一建站?
,石家庄四十八中学官网?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
如何在搬瓦工VPS快速搭建网站?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
婚礼视频制作网站,学习*后期制作的网站有哪些?
深圳网站制作平台,深圳市做网站好的公司有哪些?
如何高效搭建专业期货交易平台网站?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
深圳网站制作的公司有哪些,dido官方网站?
建站之星展会模板:智能建站与自助搭建高效解决方案
高性能网站服务器配置指南:安全稳定与高效建站核心方案
网站app免费制作软件,能免费看各大网站视频的手机app?
如何用AWS免费套餐快速搭建高效网站?
三星网站视频制作教程下载,三星w23网页如何全屏?
*请认真填写需求信息,我们会在24小时内与您取得联系。