我有一个名为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
答案 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')