下面的脚本将根据您的原始样本数据创建result.csv
(见过去的编辑质疑):
import csv
from collections import defaultdict
d_entries = defaultdict(list)
with open('fileTwo.csv', 'r') as f_fileTwo:
csv_fileTwo = csv.reader(f_fileTwo)
header_fileTwo = next(csv_fileTwo)
for cols in csv_fileTwo:
d_entries[(cols[0], cols[1])].append([cols[0], ''] + cols[1:])
with open('fileOne.csv', 'r') as f_fileOne, open('result.csv', 'w', newline='') as f_result:
csv_fileOne = csv.reader(f_fileOne)
csv_result = csv.writer(f_result)
header_fileOne = next(csv_fileOne)
csv_result.writerow(header_fileOne)
for cols in csv_fileOne:
if (cols[0], cols[2]) in d_entries:
csv_result.writerow(cols)
csv_result.writerows(d_entries.pop((cols[0], cols[2])))
result.csv
然后将含有当在Excel中打开以下数据:
使用Python测试3.4.3
要只在adv_id
栏比赛,并有所有条目:
import csv
from collections import defaultdict
d_entries = defaultdict(list)
with open('fileTwo.csv', 'r') as f_fileTwo:
csv_fileTwo = csv.reader(f_fileTwo)
header_fileTwo = next(csv_fileTwo)
for cols in csv_fileTwo:
d_entries[cols[0]].append([cols[0], ''] + cols[1:])
with open('fileOne.csv', 'r') as f_fileOne, open('result.csv', 'w', newline='') as f_result:
csv_fileOne = csv.reader(f_fileOne)
csv_result = csv.writer(f_result)
header_fileOne = next(csv_fileOne)
csv_result.writerow(header_fileOne)
for cols in csv_fileOne:
if cols[0] in d_entries:
csv_result.writerows(d_entries.pop(cols[0]))
csv_result.writerow(cols)
您好。这是你所需要的非常好的陈述,但是我没有看到你有任何证据表明你尝试了一些东西。你是否会让我们知道你在写这篇文章时遇到了什么问题,或者如果你还没有这样做,先放一下,然后在必要时修改这个问题来解释你有什么困难? – halfer
可能的重复[如何两个水平使用python合并几个.csv文件?](http://stackoverflow.com/questions/3986353/how-two-merge-several-csv-files-horizontally-with-python) – Jimilian
How 'conv_id'会影响合并吗?在两个文件中找到匹配的条目时,哪一个需要保留? –