匹配CSV中的两列;如果相等,则将值从一个CSV复制到另一个CSV

时间:2014-03-03 00:31:31

标签: python csv

我有两个CSV,其中包含大致相同的信息;遗憾的是,一个CSV缺少许多值。

我的第一张CSV格式为:

url,urlid,boilerplate,label

第二个是:

url, rank

我想将第一个CSV的排名值复制到URL值相等的行上的第二个CSV。

我该如何做到这一点?

1 个答案:

答案 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)