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