比较两个不同的 csv/excel 文件列 "Name" 并且如果两者具有相同的名称则忽略该数据并显示其余输出

compare two different csv/excel files column "Name" and if both have same name than ignore that data and display the rest of output

比较两个不同的 csv/excel 文件列 "Name" 如果两者具有相同的数据则忽略该数据并在新文件中显示其余输出。

文件 1:

KeyField,Name,City,Zip,Location
123,Fred,Chicago,60558,A2
234,Mary,Orlando,12376,4L6
345,George,Boston, 40567,22
456,Peter,Topeka,00341,234
567,Doc,Birmingham,7654,H86
678,Isabel,Guadalajara,87654,M111

文件 2:

KeyField,Name,City,Zip,Location
567,Doc,Birmingham,76543,H86
234,Michele,Orlando,12376,4L6
678,Isabel,Guadalajara,87654,U869
567,Doc,Birmingham,7654,H86
123,tony,Chicago,60558,A2
456,Peter,Topeka,00341,659

输出:文件 3:

KeyField,Name,City,Zip,Location
123,Fred,Chicago,60558,A2
234,Mary,Orlando,12376,4L6
345,George,Boston, 40567,22

您可以使用 Python 的库 pandas:

1.) 读取 Pandas dataframe 中的 CSV 文件:

In [383]: df1 = pd.read_csv('f1.csv')

In [384]: df1
Out[384]: 
   KeyField    Name         City    Zip Location
0       123    Fred      Chicago  60558       A2
1       234    Mary      Orlando  12376      4L6
2       345  George       Boston  40567       22
3       456   Peter       Topeka    341      234
4       567     Doc   Birmingham   7654      H86
5       678  Isabel  Guadalajara  87654     M111

In [385]: df2 = pd.read_csv('f2.csv')

In [386]: df2
Out[386]: 
   KeyField     Name         City    Zip Location
0       567      Doc   Birmingham  76543      H86
1       234  Michele      Orlando  12376      4L6
2       678   Isabel  Guadalajara  87654     U869
3       567      Doc   Birmingham   7654      H86
4       123     tony      Chicago  60558       A2
5       456    Peter       Topeka    341      659

2.) 在 df1 和 df2 之间做一个 LEFT JOIN。未找到匹配项的记录将具有 NULL id。

In [392]: merged = pd.merge(df1,df2, on='Name', how='left')
In [396]: merged[merged.iloc[:,-1].isnull()][['KeyField_x','Name','City_x','Zip_x','Location_x']]
Out[396]: 
   KeyField_x    Name   City_x  Zip_x Location_x
0         123    Fred  Chicago  60558         A2
1         234    Mary  Orlando  12376        4L6
2         345  George   Boston  40567         22

所以,以上就是你要的记录了。