当前位置: 首页 > news >正文

pandas表格内容比较

前阵子来了一个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 属地江苏

相关文章:

  • 数据链路层协议
  • 共享内存通信效率碾压管道?System V IPC原理与性能实测
  • 求和23年蓝桥杯省赛
  • go程序运行Spaitalite踩坑记录
  • discuz门户文章允许游客评论
  • 爱普生 SG-8200CG可编程晶振在智能手表的应用
  • pyroSAR:开源的SAR数据处理与分析工具
  • Android Framework 之了解系统启动流程二
  • Java构造方法详解:从入门到实战
  • 数据结构篇——线性表
  • 【软考-架构】13.1、软件架构概述-构件技术
  • springboot jackson 日期格式配置
  • Pycharm实用技巧
  • 8664蛋糕的美味值
  • 跨境电商新手入门:开启亚马逊之旅的实用指南
  • 远程控制中的云电脑是什么意思?1分钟学会用
  • 京东 h5st 5.1 分析
  • Centos 7 安装达梦数据库
  • @Autowired和@Resource的区别是?
  • Kubernetes 单节点集群搭建
  • 爬坡难下坡险,居民出行难题如何解?
  • 上百家单位展示AI+教育的实践与成果,上海教育博览会开幕
  • 习近平就乌拉圭前总统穆希卡逝世向乌拉圭总统奥尔西致唁电
  • 既是工具又是食物,可食用机器人开启舌尖上的新科技
  • 国税总局上海市税务局回应刘晓庆被举报涉嫌偷漏税:正依法依规办理
  • 十年磨一剑!上海科学家首次揭示宿主识别肠道菌群调控免疫新机制