0

0

使用Pandas检测DataFrame行对匹配并标记通过/失败

碧海醫心

碧海醫心

发布时间:2025-10-25 13:08:01

|

388人浏览过

|

来源于php中文网

原创

使用pandas检测dataframe行对匹配并标记通过/失败

本文详细介绍了如何使用Pandas在DataFrame中检测成对行的匹配情况,并根据匹配结果添加“通过”或“失败”状态列。文章提供了两种核心方法:针对顺序配对的直接逐对比较法,以及基于内容匹配的`pd.merge`方法,并附有示例代码、注意事项及最佳实践,旨在帮助用户高效处理数据匹配与结果标记任务。

在数据处理和质量控制中,经常需要比较数据集中成对的记录,以判断它们是否符合特定的匹配条件。例如,一个“源”记录可能需要与其对应的“目标”记录进行比较,以验证数据的一致性。本文将探讨如何利用Pandas库在DataFrame中高效地实现这一需求,并根据匹配结果添加一个“结果”列(Pass/Fail)。

1. 问题描述与示例数据

假设我们有一个DataFrame,其中包含一系列“源”(Source)和“目标”(Target)记录。这些记录是成对出现的,即每一行“源”数据后面紧跟着其对应的“目标”数据。我们需要比较每一对记录中指定列的值,如果所有指定列都匹配,则将该“源”记录标记为“通过”(Pass);否则标记为“失败”(Fail)。“目标”记录的“结果”列则留空。

以下是示例数据结构:

蕉点AI
蕉点AI

AI电商商品图生成平台 | 智能商品素材制作工具

下载
Obs | Dataset | Col1 | Col2 | Col3
----------------------------------
1   | Source  | A    | 10   | X
2   | Target  | A    | 10   | X
3   | Source  | B    | 20   | Y
4   | Target  | B    | 20   | Y
5   | Source  | C    | 30   | Z
6   | Target  | D    | 30   | Z

期望的输出格式如下,其中“Result”列作为第三列:

Obs | Dataset | Result | Col1 | Col2 | Col3
--------------------------------------------
1   | Source  | Pass   | A    | 10   | X
2   | Target  |        | A    | 10   | X
3   | Source  | Pass   | B    | 20   | Y
4   | Target  |        | B    | 20   | Y
5   | Source  | Fail   | C    | 30   | Z
6   | Target  |        | D    | 30   | Z

2. 数据准备

首先,我们创建上述示例DataFrame:

import pandas as pd

data = {
    'Obs': [1, 2, 3, 4, 5, 6],
    'Dataset': ['Source', 'Target', 'Source', 'Target', 'Source', 'Target'],
    'Col1': ['A', 'A', 'B', 'B', 'C', 'D'],
    'Col2': [10, 10, 20, 20, 30, 30],
    'Col3': ['X', 'X', 'Y', 'Y', 'Z', 'Z']
}
df = pd.DataFrame(data)

print("原始DataFrame:")
print(df)

3. 方法一:直接逐对比较(推荐用于顺序配对)

这种方法适用于“源”和“目标”记录严格按照顺序成对出现的情况(例如,Obs 1和2是一对,3和4是一对,以此类推)。我们将为每对记录创建一个唯一的标识符,然后对这些组进行比较。

步骤详解:

  1. 创建配对ID: 根据DataFrame的索引(假设索引是0开始且连续,或者根据Obs列)生成一个PairID,使得每对“源”和“目标”记录拥有相同的PairID。
  2. 定义比较列: 明确哪些列需要进行匹配判断。
  3. 按PairID分组并应用函数: 对每个PairID对应的组,提取其“源”和“目标”行,比较指定列的值。
  4. 标记结果: 如果所有比较列都匹配,则将

相关专题

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

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

54

2025.12.04

mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

182

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

284

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

256

2025.06.11

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

122

2025.08.07

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

536

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

17

2025.12.22

深入理解算法:高效算法与数据结构专题
深入理解算法:高效算法与数据结构专题

本专题专注于算法与数据结构的核心概念,适合想深入理解并提升编程能力的开发者。专题内容包括常见数据结构的实现与应用,如数组、链表、栈、队列、哈希表、树、图等;以及高效的排序算法、搜索算法、动态规划等经典算法。通过详细的讲解与复杂度分析,帮助开发者不仅能熟练运用这些基础知识,还能在实际编程中优化性能,提高代码的执行效率。本专题适合准备面试的开发者,也适合希望提高算法思维的编程爱好者。

24

2026.01.06

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

22

2026.01.23

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

Midjourney 关键词系列整合
Midjourney 关键词系列整合

共13课时 | 0.9万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

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

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