-4

我有一个名为 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
4

2 回答 2

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

现在将其写回输出文件。

于 2013-04-02T08:57:45.013 回答
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')
于 2013-04-02T09:05:38.253 回答