比较两个不同的 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
所以,以上就是你要的记录了。
比较两个不同的 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
所以,以上就是你要的记录了。