如何添加两列并更新python中的CSV?

时间:2019-10-27 14:15:27

标签: python csv file-writing

我在这里有一个问题:

  

写一个名为computed_column的函数,该函数将一个字符串作为参数,表示格式为<string>,<int>,<int>,<int>,<int>的5列CSV文件的名称,并写入一个名为creation.csv的文件,其中包含所有输入文件中的数据,但第六列包含第三列和第二列的值之和。

这是我尝试过的:

    import csv
    def computed_column(csvfile):
    with open(csvfile,newline='') as f:
      with open('creation.csv','w',newline='') as f2:
        y=[]
        writer = csv.writer(f2)
        rows = csv.reader(f)
        for row in rows:
          for i in range(0,len(row[1])):
            y.append(int(row[1][i]) + int(row[2][i]))
          writer.writerow(row+y)

它正确地写入了原始文件,但是给我将要写入的第六列的输出错误。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,则不需要。对于每一行,您只需要将值添加到第二行和第三列(那个行),然后将总和插入第六列。您只需要遍历每一行,然后使用row index 来访问第二和第三列。

此外,列表y随处理的每一行而增长(每次都会增加一列)。我认为那不是你的意图。在您的for循环中移动它,以便每行重置为一个空列表。尝试这样的事情:

def computed_column(csvfile):
    with open(csvfile,newline='') as f:
        with open('creation.csv','w',newline='') as f2:
            writer = csv.writer(f2)
            rows = csv.reader(f)
            for row in rows:
                y=[]
                y.append(int(row[1]) + int(row[2]))
                writer.writerow(row+y)