使用python编写和读取CSV文件

使用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

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

你应该维护一个以“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