pandas表格内容比较

news2025/3/16 15:12:27

前阵子来了一个211大学实习生(小男生),要比较2个版本字段的变化,辅助完成系统升级字段替换,要求找出哪些字段是新增的,哪些字段是删除的,哪些字段是属性信息修改的,要求半天时间搞定,8000多个字段,他可怜巴巴的不会弄,给我买一杯奶茶,我就帮忙代劳一下啊,轻松拿捏~

ailx10

网络安全优秀回答者

互联网行业 安全攻防员

去咨询

举个例子:表1和表2的列名称是一样的,但是内容是有差异的,字面上你可以把表1和表2,理解为7年级前后一周的变化,也就是系统升级前和升级后的变化,而表格对比就是需要计算出有什么样的变化,比如:

  • 张三成绩变化了(内容变更)
  • 李四成绩不变(升级不影响)
  • 王二转移到7(2)班(内容变更)
  • 麻一新增到7(2)班(新增字段)

表1

表2

对比结果:

  • "left_only":该行只存在于表格1中,可以看到张三,王二有变化
  • "right_only":该行只存在于表格2中,可以看到张三,王二有变化,麻一是新增
  • "both":该行同时存在于表格1和表格2中,可以看到李四没有变化

表格对比

完整代码如下,轻松拿捏:

import pandas as pd
"""
这段代码会将csv1和csv2中的所有行合并,并添加一个名为"_merge"的列来标记每个行的来源。"_merge"列包含以下值:
"left_only":该行只存在于df1中
"right_only":该行只存在于df2中
"both":该行同时存在于df1和df2中
您可以根据"_merge"列来区分两个csv文件中的不同之处。
另外,如果您希望查看哪些字段不同,可以将"_merge"列过滤出来,并使用drop()函数删除相同的行,然后查看剩下的行即可。
"""
# 读取csv文件
df1 = pd.read_csv('csv1.csv',encoding="gbk")
df2 = pd.read_csv('csv2.csv',encoding="gbk")

# 将两个DataFrame进行合并,并标记每个行的来源
merged = pd.merge(df1, df2, on=list(df1.columns), how='outer', indicator=True)
# merged = pd.merge(df1, df2, on=["姓名","班级"], how='outer', indicator=True)
# 将结果输出为csv文件
merged.to_csv('diff2.csv', index=False)

发布于 2023-05-06 19:25・IP 属地江苏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2316108.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TMS320F28P550SJ9学习笔记13: 软件I2C_驱动AT24Cxx存储芯片

今日尝试配置软件I2C通信,我的目标通信芯片是AT24C64,相较于AT24C02这样的8位寻址,它是16位寻址的,所以有些不同 文章提供测试代码讲解、完整工程下载、测试效果图 目录 软件I2C引脚初始化: C内联函数改变SCL与SDA的输…

手抖预防方法主要包括以下几个方面

手抖预防方法主要包括以下几个方面: 1. 心理调节:保持心情舒畅,避免过度紧张和焦虑。如有必要,可以寻求心理医生帮助进行心理调适。 2. 充分休息:保证充足的睡眠时间,避免熬夜和过度劳累。合理安排工作和…

SpringBoot MCP 入门使用

随着AI的火爆,最近发现MCP在未来确实大有可为,作为一名javaer怎么可以落后在历史洪流呢,根据官网和cursor也从零开始体验一下自定义mcp server。以后可以根据自己业务场景做出各种适合自身业务的工具。 至于什么是MCP 可以到https://modelcon…

Windows 11 安装Docker Desktop环境

1、确认CPU开启虚拟化 打开任务管理器,切换到“性能”选项卡,查看 CPU 信息。若“虚拟化”状态显示为“已启用”,则表示虚拟化已开启;若显示为“已禁用”,则需要在启动时进入 BIOS 开启虚拟化设置(若显示已…

汽车保养记录用什么软件记录,汽车维修记录查询系统,佳易王汽车保养维护服务记录查询管理系统操作教程

一、概述 本实例以佳易王汽车保养维护服务记录查询管理系统为例说明,其他版本可参考本实例。试用版软件资源可到文章最后了解,下载的文件为压缩包文件,请使用免费版的解压工具解压即可试用。 软件特点:1、功能实用,操…

深入理解C/C++堆数据结构:从原理到实战

一、堆的本质与特性 1.1 什么是堆数据结构? 堆(Heap)是一种特殊的完全二叉树,它满足以下核心性质: 堆序性:每个节点的值都满足特定顺序关系 结构性:完全二叉树的结构特性(除最后一…

【MATLAB实战】实现白鲸算法(BWO)优化BP神经网络:提升模型性能的新思路

一、什么是白鲸优化算法(BWO)? 白鲸优化算法是受自然界中白鲸群体行为和觅食策略启发的一种新型智能优化算法。白鲸在捕食过程中展现出高效的协作能力和适应性,例如通过“回声定位”搜索猎物位置群体间信息共享,这些行…

医疗资源联动,广州长泰医院与海南德雅医院共筑地贫防治新篇章

​ 为贯彻落实"健康中国"战略关于出生缺陷综合防治的部署要求,推动地中海贫血防治体系建设。2025年3月15日,广州长泰医院与海南德雅医院联合主办的“地中海贫血生殖遗传干预大型义诊暨合作签约仪式”在广州正式启动,活动以“爱与希…

DeepSeek在医学领域的应用

DeepSeek作为高性能AI大模型,在医学领域的应用场景广泛,结合其在数据处理、自然语言理解和深度学习方面的优势,显著推动了医疗行业的智能化转型。以下是其核心应用场景及具体案例: 1. 辅助诊断与决策支持 临床辅助诊断&#xff1…

3.数据结构-串、数组和广义表

串、数组和广义表 3.1串3.1.1串的类型定义、存储结构及其运算串的顺序存储串的堆式顺序存储结构串的链式存储 3.1.2 串的模式匹配算法BF算法*KMP算法(待更新) 3.2数组3.2.1数组的顺序存储3.2.2特殊矩阵的压缩存储对称矩阵三角矩阵对角矩阵 3.3广义表*案例…

苹果电脑杀毒软件CleanMyMac

杀毒软件在苹果家族中是一个小众软件,百度搜索苹果电脑杀毒软件,可能各种杀软良莠不齐,因为在这个市场非常小,绝大多数都是冲着“清理”去的,而不是杀毒。最近测试了一款Mac电脑杀毒软件,杀毒效果也是一般般…

Day16:二叉搜索树和双向链表

将一个 二叉搜索树 就地转化为一个 已排序的双向循环链表 。 对于双向循环列表,你可以将左右孩子指针作为双向循环链表的前驱和后继指针,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。 特别地,我们希望可以…

Qt QML实现弹球消砖块小游戏

前言 弹球消砖块游戏想必大家都玩过,很简单的小游戏,通过移动挡板反弹下落的小球,然后撞击砖块将其消除。本文使用QML来简单实现这个小游戏。 效果图: 正文 代码目录结构如下: 首先是小球部分,逻辑比较麻…

如何在实际应用中测量和调整直线导轨的预紧力?

在实际应用中,准确测量和调整直线导轨的预紧力对于保证设备的性能和精度至关重要,但测量和调整直线导轨的预紧力需要根据具体的导轨型号和结构来选择合适的方法。以下是一些常见的测量和调整方法: 1、使用压力传感器:在一些先进的…

YOLO11 使用入门

YOLO12 使用入门 1. 源码下载2. 权重下载3. 环境配置4. 例程测试4.1. 目标检测4.1.1. 源文件 model4.1.2. 结果Results4.1.3. 边界框 Boxes 2.2. 图像分割4.2.1. 推理 model.predict4.2.2. 掩码 Masks 1. 源码下载 之前介绍了《目标检测 YOLOv5 使用入门》 现在是 2024.12.2…

汽车感性负载-智能高边钳位能量计算

随着汽车电子技术的发展,新的电子电气架构下,越来越多的执行部件在车身出现,比如电磁阀、风机、水泵、油泵、雨刮继电器等常用的执行器, 它们一般都表现为感性特点。驱动这些负载的最简单和最常见的方法是将它们连接到高边侧开关(…

基于Python+Flask+MySQL+HTML的爬取豆瓣电影top-250数据并进行可视化的数据可视化平台

FlaskMySQLHTML 项目采用前后端分离技术,包含完整的前端,以flask作为后端 Pyecharts、jieba进行前端图表展示 通过MySQL收集格列数据 通过Pyecharts制作数据图表 这是博主b站发布的详细讲解,感兴趣的可以去观看:【Python爬虫可…

七大常用智能家居协议对比

如果您不知道在项目中使用哪种智能家居通信协议,那么进入智能家居行业可能会很困难。如果没有合适的协议将其集成到智能家居生态系统中,智能家居设备将无法正常工作。否则,您将面临硬件和软件无法满足最终用户期望的风险。协议选择不当可能会…

996引擎-问题处理:缺失特效分割文件 ModelAtlasSplitConfigs

通常我们买的资源都是带会 ModelAtlasSplitConfigs.txt 或 sceneAtlasSplitConfigs.txt 的 但有时确实找不到的话,是可以用996工具生成的:

异步加载错误如何解决

首先是 提供两张图 如果数据过多的情况下我在所内和住家形式频繁的来回切换 导致数据展示的不一样 大家是不是有这样的问题 这个是导致了数据展示有问题的情况 住家的情况本来是没有几层的 下面我帮大家解决一下 // 防止异步延迟 const Noop () > { } const lhl (resDa…