删除重复项并在csv中的python中添加列值

时间:2016-04-23 10:20:49

标签: python csv

我的csv中有两列:一列显示颜色,另一列显示颜色数。

color | count
red | 2
red | 5
green | 7
blue | 9
green | 3
orange | 5

我想从第一列中删除重复项,但总结相应的颜色值。如何使用python执行此操作?我希望输出在csv中。

预期输出

color | count
red | 7
green | 10
blue | 9
orange | 5

这是我的代码:

import csv reader=csv.reader(open('cu.csv', 'r'), delimiter=',')  
writer=csv.writer(open('cu-clean.csv', 'w'), delimiter=',')  
lastnames = set()  
for row in reader: if row[1] not in lastnames: writer.writerow(row)  
lastnames.add( row[1] )`

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:0)

import csv

with open('file.csv', 'rb') as f:
    reader = csv.reader(f)
    colors = {}

    index = 0
    for row in reader:
        if index == 0:
            header = row
        else:
            color = row[0]
            count = row[1]

            if color in colors:
                colors[color] += int(count)
            else:
                colors[color] = int(count)
        index += 1

with open('out.csv', 'w') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=header, delimiter=',', lineterminator='\n')
    writer.writeheader()
    for k, v in colors.iteritems():
        writer.writerow({header[0]: k, header[1]: v})

这是为所有颜色和它们出现的次数保存字典,然后只是将字典写入文件。 您可以将分隔符更改为您想要的任何内容(似乎您使用过" |")

(在python 2.7上测试)