首页 > 解决方案 > 使用主列查找两个 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

标签: pythonpython-3.xpandas

解决方案


我建议您将两个 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 差异的更多详细信息,请阅读另一个问题。


推荐阅读