首页 > 解决方案 > 如何在 python 中添加两列并更新 CSV?

问题描述

我在这里有一个问题:

编写一个名为的函数,该函数computed_column将字符串作为参数,表示格式为 5 列的 CSV 文件的名称,<string>,<int>,<int>,<int>,<int>并写入一个名为的文件,该文件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)

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

标签: pythoncsvfile-writing

解决方案


如果我正确理解了您的问题,则不需要内部 for 循环。对于每一行,您只需将(行的)第二列和第三列中的值相加,并将总和作为第六列值插入。您只需要遍历每一行,然后使用row 索引访问第二列和第三列。

此外,您的列表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)

推荐阅读