从一列中删除重复项并添加其对应的值

最后发布: 2013-11-11 11:08:58


问题

我有三列包含大量数据,第一列具有ID,第三列具有值。 id中有重复项,但值中没有重复项。 我想从ID的列中删除重复项,但想要所有值的总和。 例如id class_code值a = 1 b * 2 c + 3 a + 4 d = 5 b + 6 a = 7 a + 8 b * 9

想要输出像

a   8
a   12
b   11
c   3
d    5

仅删除那些具有相同class_codes和id的值,然后在其中添加值,此操作将打印整个列表后,还删除具有标题的第一行。 我试过了但是从表中删除了整个价值

file="C:/Python25/ref.txt"
fh=open(file,'r')
myData=fh.read()
myText=myData.split()
line_seen=set()
for line in myText:
    if line in line_seen:
        line_seen.add(line)
            print line[0:]

fh.close()
python python-2.7
回答

d = {}
with open('your_file', 'r') as f:
    for line in f.readlines():
        line = line.split()
        if line[0] in d:
            d[line[0]] += int(line[2])
        else:
            d[line[0]] = int(line[2])
  1. 逐行读取文件。
  2. 如果id不存在,请插入字典中。
  3. 如果存在id则更新词典。
  4. 繁荣! 完成。


回答

使用字典时非常简单。 这样的事情应该可以工作(未经测试):

D = dict()
for line in myText:
    if line[0] not in D.keys():
        D[line[0]] = line[1])
    else
        D[line[0]] = D[line[0]] + line[1])


回答

from collections import defaultdict

d = defaultdict(int)
for line in open('ref.txt'):
    key, value = line.split()
    d[key] += int(value)

print sorted(d.items())

[('a',20),('b',17),('c',3),('d',5)]