本文介绍使用 pandas 的 merge + indicator 参数实现“差异行定位”,以 id 为关联键、仅比对 value1/value2 列,快速找出两表中同 id 但数值不一致的记录,避免逐行循环,兼顾性能与可读性。
在数据比对场景中(如 ETL 校验、版本差异分析),常需识别两个结构相似的 DataFrame 中「主键相同但业务字段不同」的行。本例中,ID 是逻辑主键,目标是精准定位 df1 和 df2 中 ID 存在于双方、但 Value1 或 Value2 至少一列值不一致的所有行(即 'C' 和 'D')。
直接使用 merge 的 indicator=True 参数进行外连接(outer join),可一次性标记每行来源(left_only、right_only、both)。但注意:我们不希望简单取 left_only 行——那会包含 df1 中 ID 不在 df2 里的行(如 'E'),而题目明确要求“基于 '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]
})
# 步骤1:基于 ID + Value1 + Value2 外连接,标记来源
merged = df1.merge(df2, how='outer', on=['ID', 'Value1', 'Value2'], indicator=True)
# 步骤2:取 df1 中独有的组合,再限制 ID 必须同时存在于 df2 中
diff_rows = merged[merged['_merge'] == 'left_only'].drop('_merge', axis=1)
result = diff_rows[diff_rows['ID'].isin(df2['ID'])].reset_index(drop=True)
print(result)输出:
ID Date Value1 Value2 0 C 2025-01-03 3 7 1 D 2025-01-04 4 8
✅ 为什么这个解法“简洁高效”?
⚠️ 注意事项:
此方案兼顾准确性、性能与可维护性,是生产环境中推荐的 DataFrame 差异检测范式。
# 为什么
# pandas
# date
# 循环
# etl
# 重构
# 比对
# 笛卡尔
# 主键
# 只需
# 如需
# 两步
# 那会
# 完全相同
# 本例
相关文章:
如何破解联通资金短缺导致的基站建设难题?
平台云上自主建站:模板化设计与智能工具打造高效网站
如何在宝塔面板中创建新站点?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
企业微网站怎么做,公司网站和公众号有什么区别?
如何基于云服务器快速搭建网站及云盘系统?
如何在建站之星绑定自定义域名?
如何制作算命网站,怎么注册算命网站?
定制建站方案优化指南:企业官网开发与建站费用解析
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
模具网站制作流程,如何找模具客户?
建站主机核心功能解析:服务器选择与网站搭建流程指南
如何在Golang中指定模块版本_使用go.mod控制版本号
如何选择可靠的免备案建站服务器?
建站之星安装模板失败:服务器环境不兼容?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
如何高效配置IIS服务器搭建网站?
网站制作网站,深圳做网站哪家比较好?
家具网站制作软件,家具厂怎么跑业务?
建站主机类型有哪些?如何正确选型
Java解压缩zip - 解压缩多个文件或文件夹实例
建站之星代理商如何保障技术支持与售后服务?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
如何批量查询域名的建站时间记录?
微信小程序 input输入框控件详解及实例(多种示例)
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
图册素材网站设计制作软件,图册的导出方式有几种?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
如何用VPS主机快速搭建个人网站?
攀枝花网站建设,攀枝花营业执照网上怎么年审?
实例解析angularjs的filter过滤器
如何打造高效商业网站?建站目的决定转化率
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
nginx修改上传文件大小限制的方法
零服务器AI建站解决方案:快速部署与云端平台低成本实践
html制作网站的步骤有哪些,iapp如何添加网页?
已有域名和空间,如何快速搭建网站?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
如何在服务器上配置二级域名建站?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
如何用低价快速搭建高质量网站?
如何在Ubuntu系统下快速搭建WordPress个人网站?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。