使用python写入和读取CSV文件

时间:2013-04-02 08:45:16

标签: python

我有一个名为temp.csv的csv,其中有3列

Name    Iteration     Value //this temp.csv file
module1   1             10
module2   2             20
module3   3             30
module4   4             40
module1   5             50
module2   6             60
module3   7             70
module4   8             80
module1   9             90

现在我想要一个名为accumuated.csv的新csv,如

Name    Iteration     Value
module1   1,5,9        150 i.e. 10+50+90
module2   2,6          80 i.e. 20+60
modul13   3,7          100 i.e.  30+70
module4   4,8          120 i.e. 40+80

2 个答案:

答案 0 :(得分:2)

您应该使用“名称”作为键来维护字典。该值可以是具有“迭代”和“值”的列表。

遍历输入csv文件并根据“名称”更新字典。

示例代码:

with open("111.csv") as f:
    lines = f.readlines()
    print lines

data = {}

for line in lines[1:]:
    print line
    name, iteration, value = line.split()
    print line
    if name not in data:
        data[name] = [[], 0]

    data[name][0].append(iteration)
    data[name][1] += int(value)

print data

现在将其写回输出文件。

答案 1 :(得分:0)

我建议使用名称作为键和列表的字典,包括迭代(作为子列表)和总和作为值,例如:

d = {}
with open("orig.csv") as f:
    lines = [f.split(',') for f in f.readlines()[1:]
for line in lines:
    if line[0] not in d:
        d[line[0]] = [0,[]]
    d[line[0]][1].append(line[1])
    d[line[0]][0] += line[2]
with open("new.csv",'w') as f:
    f.write("Name,Iteration,Value")
    for mod in d:
        f.write(mod+',"'+','.join(d[mod][1])+'",'+d[mod][0]+'\n')