0

0

使用 Pandas 比对 DataFrame 中的多列并查找不匹配项

心靈之曲

心靈之曲

发布时间:2025-08-13 22:06:01

|

958人浏览过

|

来源于php中文网

原创

使用 pandas 比对 dataframe 中的多列并查找不匹配项

本文介绍了如何使用 Pandas 库有效地比较两个 DataFrame 中的多个列,并找出所有列的值完全匹配的行。我们将探讨使用 pd.merge 函数,结合 indicator 参数来识别差异行的方法,并提供示例代码和注意事项,确保结果的准确性和可靠性。通过本文,您将掌握在 Pandas 中进行复杂数据比对的技巧。

在数据分析和处理中,经常需要比较两个 DataFrame 的数据,找出差异。当需要比较多个列时,简单地逐行比较可能效率低下。 Pandas 提供了强大的 merge 函数,结合 indicator 参数,可以方便地找出两个 DataFrame 中指定列完全匹配的行,并识别出不匹配的行。

使用 pd.merge 查找不匹配项

pd.merge 函数可以根据一个或多个列将两个 DataFrame 连接起来。通过设置 how 参数为 'right',我们可以保留右侧 DataFrame (例如 df_new) 的所有行。通过设置 indicator 参数为 True,merge 函数会添加一个名为 _merge 的列,指示每一行来自哪个 DataFrame。_merge 列的值可以是 'left_only'(仅在左侧 DataFrame 中存在),'right_only'(仅在右侧 DataFrame 中存在),或 'both'(在两个 DataFrame 中都存在)。

以下是一个示例:

import pandas as pd

# 创建示例 DataFrame
df_old = pd.DataFrame({'column1': ['x', 'a'], 
                      'column2': ['y', 'b'], 
                      'column3': ['z', 'c']})
df_new = pd.DataFrame({'column1': ['a', 'x'], 
                      'column2': ['b', 'y'], 
                      'column3': ['c', 'z']})

# 使用 pd.merge 进行比较
merged_df = pd.merge(df_old, df_new, on=['column1','column2','column3'], how='right', indicator=True)

# 筛选出仅在右侧 DataFrame 中存在的行(不匹配的行)
mismatched_rows = merged_df[merged_df['_merge'] == 'right_only']

# 删除 indicator 列
mismatched_rows = mismatched_rows.drop('_merge', axis=1)

# 打印不匹配的行
print(mismatched_rows)

在这个例子中,df_old 和 df_new 包含相同的数据,但顺序不同。merge 函数会根据 column1, column2 和 column3 进行比较。由于两个 DataFrame 中都存在相同的行,即使顺序不同,_merge 列的值也会是 both,因此 mismatched_rows 将为空。如果 df_new 中有 df_old 中没有的行,这些行会被识别为不匹配。

Napkin AI
Napkin AI

Napkin AI 可以将您的文本转换为图表、流程图、信息图、思维导图视觉效果,以便快速有效地分享您的想法。

下载

代码解释:

  1. 导入 Pandas 库: import pandas as pd 导入 Pandas 库,并将其别名为 pd。
  2. 创建示例 DataFrame: 创建两个名为 df_old 和 df_new 的 DataFrame,包含示例数据。
  3. 使用 pd.merge 进行比较: pd.merge(df_old, df_new, on=['column1','column2','column3'], how='right', indicator=True) 使用 pd.merge 函数将两个 DataFrame 合并。
    • on=['column1','column2','column3'] 指定用于合并的列。
    • how='right' 指定合并方式为右连接,即保留右侧 DataFrame (df_new) 的所有行。
    • indicator=True 添加一个名为 _merge 的列,指示每一行来自哪个 DataFrame。
  4. 筛选出不匹配的行: mismatched_rows = merged_df[merged_df['_merge'] == 'right_only'] 筛选出 _merge 列值为 'right_only' 的行,这些行表示仅在右侧 DataFrame (df_new) 中存在的行,即不匹配的行。
  5. 删除 indicator 列: mismatched_rows = mismatched_rows.drop('_merge', axis=1) 删除 _merge 列,因为它不再需要。
  6. 打印不匹配的行: print(mismatched_rows) 打印不匹配的行。

注意事项:

  • Pandas 版本: 确保你的 Pandas 版本是最新的。旧版本可能会有 bug,导致不正确的结果。
  • 数据类型: 确保用于比较的列的数据类型一致。如果数据类型不一致,可能会导致错误的结果。
  • 缺失值: merge 函数会处理缺失值。如果你的数据包含缺失值,请确保你理解 merge 函数如何处理它们。
  • 顺序: merge 函数会考虑行的顺序。如果行的顺序不同,即使数据相同,也会被认为是不同的行。

总结:

使用 Pandas 的 pd.merge 函数结合 indicator 参数,可以有效地比较 DataFrame 中的多个列,并找出不匹配的行。这种方法比逐行比较更高效,并且可以处理大型数据集。通过理解 merge 函数的工作原理和注意事项,你可以确保结果的准确性和可靠性。

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

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

49

2025.12.04

python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

184

2023.09.27

数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

298

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

216

2025.10.31

数据分析的方法
数据分析的方法

数据分析的方法有:对比分析法,分组分析法,预测分析法,漏斗分析法,AB测试分析法,象限分析法,公式拆解法,可行域分析法,二八分析法,假设性分析法。php中文网为大家带来了数据分析的相关知识、以及相关文章等内容。

455

2023.07.04

数据分析方法有哪几种
数据分析方法有哪几种

数据分析方法有:1、描述性统计分析;2、探索性数据分析;3、假设检验;4、回归分析;5、聚类分析。本专题为大家提供数据分析方法的相关的文章、下载、课程内容,供大家免费下载体验。

264

2023.08.07

网站建设功能有哪些
网站建设功能有哪些

网站建设功能包括信息发布、内容管理、用户管理、搜索引擎优化、网站安全、数据分析、网站推广、响应式设计、社交媒体整合和电子商务等功能。这些功能可以帮助网站管理员创建一个具有吸引力、可用性和商业价值的网站,实现网站的目标。

718

2023.10.16

数据分析网站推荐
数据分析网站推荐

数据分析网站推荐:1、商业数据分析论坛;2、人大经济论坛-计量经济学与统计区;3、中国统计论坛;4、数据挖掘学习交流论坛;5、数据分析论坛;6、网站数据分析;7、数据分析;8、数据挖掘研究院;9、S-PLUS、R统计论坛。想了解更多数据分析的相关内容,可以阅读本专题下面的文章。

499

2024.03.13

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

74

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号