使用python编写和读取CSV文件
我有一个名为temp.csv的csv,其中有3列使用python编写和读取CSV文件,python,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
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
你应该维护一个以“Name”为键的字典。值可以是带有“迭代”和“值”的列表 遍历输入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
现在将其写回输出文件。我建议使用名称作为键和列表的字典,包括迭代(作为子列表)和总和作为值,例如:
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')
“你尝试过什么”的评论现在是禁止的。但是,你知道,你试过什么?@jamylak@user问题是什么?@user2147857为了扩展你试过的内容,这个问题缺少了一切。我可以看到每个迭代都会在每个模块中增加4次,但你甚至都没有费心把它添加到问题中。你能补充一下你的问题吗:到目前为止你的代码和你想要达到的目标。这是一个很好的用于处理csv文件的模块,名为。。。csv?Hi..其工作原理与模块4相反,先插入模块4,然后插入模块3、模块2和模块1。我怎样才能扭转这种局面。字典是未排序的,所以你甚至不能可靠地指望顺序是向后的。在排序(d.keys())中尝试使用mod
。