如何比较两个 csv,从中寻找file_1.csv没有重复的行file_2.csv并将其打印到文件中?(熊猫打算使用):import pandas as pdoriginal = pd.read_csv('file_1.csv', sep=';')backup = pd.read_csv('file_2.csv', sep=';')n = pd.concat([original,backup], axis=0)n.drop_duplicates(keep='first', inplace=True)n.to_csv('diff.csv', sep=';')File_1.csvA00;A01;B01A10;A11;B12A20;A21;B22....File_2.csv A00;A01;B01A20;A21;B22diff.csv [Real]A00;A01;B01A20;A21;B22diff.csv [Expected]A10;A11;B12这让我得到了两个文件之间重复的所有行,而不是 file_1 中 file_2 中缺少的行。这些是大文件和大行数。谢谢
1 回答
料青山看我应如是
TA贡献1772条经验 获得超8个赞
pd.concat在这里不起作用,因为您无法判断结果中存在的行是来自原始行还是来自备份。相反,您应该pd.merge在所有列上使用 with indicator=True,它基本上执行外部联接,同时告诉您每一行是否都存在于两者中DataFrames:
>>> merged = df1.merge(df2, how='outer', on=list(df1.columns), indicator=True)
>>> merged
0 1 2 _merge
0 A00 A01 B01 both
1 A10 A11 B12 left_only
2 A20 A21 B22 both
然后我们可以过滤并删除该_merge列以获得我们期望的结果:
>>> result = merged[merged['_merge'] == 'left_only'].drop(columns=['_merge'])
>>> result
0 1 2
1 A10 A11 B12
添加回答
举报
0/150
提交
取消