我是一名有用的助手,可以为您翻译文本。
我有两个csv文件,长这样:
第一个文件:
143, m, 933, gt, mr
129, f, 945, se, tk
267, f, 234, kl, tk
122, t, 586, gt, zi
第二个文件:
143, 533
876, 676
122, 221
231, 879
现在我想要合并所有行中特定的列,其中第一个文件中的数字与第二个文件中的数字相同。处理后的示例如下:
143, gt, mr, 533
122, gt, zi, 221
因为我想将文件1中的列0
、3
、4
与文件2中的列1
相结合,如果第一列中的数字相同(在这种情况下是143
和122
)。两个文件中都有约3000行,其中许多行的第一列数字相同,因此我希望所有匹配的结果都写入一个结果文件。以下是我的代码:
def combiner(file 1, file 2, result_file):
with open(file 1,"rb") as f1, open(file 2,"rb") as f2, open(result_file,"wb") as result:
rdr1= csv.reader(f1)
rdr2= csv.reader(f2)
wtr= csv.writer(result)
for row1 in rdr1:
for row2 in rdr2:
if row2[0] == row1[0]:
wtr.writerow((row2[0], row2[3], row2[4], row1[1]))
如果我运行程序,它只能在第一行工作,但之后就停止了。应用于这个例子,我只会得到。
143, gt, mr, 533
在我的结果文件中写下了这段内容。我认为for循环存在问题。可能是一个简单的解决方案,但我目前没有看到自己的错误。