我有两个CSV,其中包含大致相同的信息;遗憾的是,一个CSV缺少许多值。
我的第一张CSV格式为:
url,urlid,boilerplate,label
第二个是:
url, rank
我想将第一个CSV的排名值复制到URL值相等的行上的第二个CSV。
我该如何做到这一点?
答案 0 :(得分:3)
# create dict from first csv, with url as key
with open("first.csv", "r") as f:
first = {rows[0]: rows[1:] for rows in list(csv.reader(f))}
# compare second csv and append rank
with open("second.csv", "r") as f:
for row in csv.reader(f):
if row[0] in first: # row[0] = url
first[row[0]].append(row[1]) # row[1] = rank
# convert dict back to list
merged = [(k,) + tuple(v) for k, v in first.items()]
# write list to output csv
with open("output.csv", "w") as f:
csv.writer(f).writerows(merged)