使用python按列查找两个csv文件之间的差异
我有两个csv文件 file1.csv使用python按列查找两个csv文件之间的差异,python,csv,Python,Csv,我有两个csv文件 file1.csv col1,col2,col3 1,2,3 4,5,6 7,8,9 文件2.csv col1,col2,col3 0,2,3 4,0,6 7,8,9 我想比较这两个文件,按列将结果输出到另一个文件。 文件3.csv col1,col2 1,0 0,5 0,0 我试过的代码 import csv with open('file1.csv', 'r') as t1: old_csv = t1.readlines() with open('file2
col1,col2,col3
1,2,3
4,5,6
7,8,9
文件2.csv
col1,col2,col3
0,2,3
4,0,6
7,8,9
我想比较这两个文件,按列将结果输出到另一个文件。
文件3.csv
col1,col2
1,0
0,5
0,0
我试过的代码
import csv
with open('file1.csv', 'r') as t1:
old_csv = t1.readlines()
with open('file2.csv', 'r') as t2:
new_csv = t2.readlines()
with open('file3.csv', 'w') as out_file:
line_in_new = 1
line_in_old = 1
leng=len(new_csv)
out_file.write(new_csv[0])
while line_in_new < len(new_csv) and line_in_old < len(old_csv):
if (old_csv[line_in_old]) != (new_csv[line_in_new]):
out_file.write(new_csv[line_in_new])
else:
line_in_old += 1
line_in_new += 1
这是对stackoverflow中的一个答案稍加修改的版本。如何实现逐列比较
提前谢谢 如果两个CSV文件中的列数和行数相同,可以使用pandas快速获得差异
import pandas as pd
df1 = pd.read_csv('file1.csv')
df2 = pd.read_csv('file2.csv')
diff = df1 - df2
diff.to_csv('file3.csv', index=False)
file3.csv内容如下所示:
col1,col2,col3
1,0,0
0,5,0
0,0,0
如果两个CSV文件中的列数和行数相同,则可以使用pandas快速获得差异
import pandas as pd
df1 = pd.read_csv('file1.csv')
df2 = pd.read_csv('file2.csv')
diff = df1 - df2
diff.to_csv('file3.csv', index=False)
file3.csv内容如下所示:
col1,col2,col3
1,0,0
0,5,0
0,0,0
如果您已经阅读了您的台词,您可以执行以下操作: 对于范围为MinLenold_csv、lennew_csv的i: 对于zipnew_csv[i].split中的新_值、旧_值、旧_csv[i].split,:您可以在此处添加切片[start:stop],以仅选择某些列 在新文件中写入您想要的内容,例如: new_file.WriteStrentNew_值-输入输入值
我希望这能回答你的问题。如果你已经读过你的台词,你可以做以下事情: 对于范围为MinLenold_csv、lennew_csv的i: 对于zipnew_csv[i].split中的新_值、旧_值、旧_csv[i].split,:您可以在此处添加切片[start:stop],以仅选择某些列 在新文件中写入您想要的内容,例如: new_file.WriteStrentNew_值-输入输入值
我希望这能回答你的问题。詹姆斯的回答是正确的,应该能解决你的问题。如果您想避免像ID\u col、string\u cols这样的少数列,您可以尝试下面的代码。cols是要计算差异的列的列表
import pandas as pd
cols = ['req_col1','req_col2','req_col3']
df3 = pd.DataFrame(cols )
df1 = pd.read_csv('file1.csv')
df2 = pd.read_csv('file2.csv')
for col in cols:
df3[col] = df1[col] - df2[col]
df3.to_csv('filepath.csv')
詹姆斯的回答是正确的,应该能解决你的问题。如果您想避免像ID\u col、string\u cols这样的少数列,您可以尝试下面的代码。cols是要计算差异的列的列表
import pandas as pd
cols = ['req_col1','req_col2','req_col3']
df3 = pd.DataFrame(cols )
df1 = pd.read_csv('file1.csv')
df2 = pd.read_csv('file2.csv')
for col in cols:
df3[col] = df1[col] - df2[col]
df3.to_csv('filepath.csv')
您是如何获得文件3输出的?你在做什么样的比较?你的意思是:我想比较这两个文件,按列输出结果到另一个文件。csv?您是如何获得文件3输出的?你在做什么样的比较?你的意思是:我想比较这两个文件,按列输出结果到另一个文件。文件3.csv?