python - 使用主列查找两个 CSV 文件之间的差异
问题描述
我有两个 CSV 文件:
文件 1
Id, 1st, 2nd
1, first, row
2, second, row
文件 2
Id, 1st, 2nd
1, first, row
2, second, line
3, third, row
我刚开始使用python,需要编写一些代码,它可以根据主列对这些文件进行差异,在这种情况下是第一列“Id”。输出文件应该是一个增量文件,它应该标识第二个文件中已更改的行:
输出增量文件
2, second, line
3, third, row
解决方案
我建议您将两个 CSV 文件都加载为 Pandas DataFrames,然后使用和外部merge
指示符来了解第二个文件中的哪些行发生了变化。然后,您使用query
仅获取第二个文件中更改的行,并删除指示符列 ('_merge')。
import pandas as pd
df1 = pd.read_csv("FILENAME_1.csv")
df2 = pd.read_csv("FILENAME_2.csv")
merged = pd.merge(df1, df2, how="outer", indicator=True)
diff = merged.query("_merge == 'right_only'").drop("_merge", axis="columns")
有关查找 Pandas DataFrames 差异的更多详细信息,请阅读另一个问题。
推荐阅读
- prestashop - 无法让 Prestashop Bitnami Stack 1.7 在 Windows 上运行
- javascript - React js css loader 给出了编译失败的问题
- arrays - 将 eloqvent 对象转换为数组
- javascript - 检查用户名是否有来自名称的 4 个连续字母 - javascript
- javascript - 如何从antd Image中删除编辑器图标
- c# - 使动态创建的面板在 winform 响应式(与我的 flowlayoutPanel 大小相同) - C#
- android - 将数据插入具有外键约束的表时面临问题
- c# - 有人能告诉我为什么这段代码不起作用吗?我正在尝试找到第 10001 个素数
- theory - 找到以下的正则表达式?奇数长度的语言,不能包含长度倍数 3 超过 ={,}
- c++ - 在 pthread 中返回 void 指针