【问题标题】:how to add new col at the end of csv/txt file python如何在csv /文本文件python的末尾添加新列
【发布时间】:2016-09-10 12:13:43
【问题描述】:

我正在寻找一个脚本来通过 python 将一个新的数据列添加到现有的 csv 文件中。我有一个文件(例如 file.csv),它将有很多行和很少的列。通过for loop 计算,我得到了一个新数组(我的代码中的 A 在这里)。我想将该新数组 (A) 附加为现有 csv 文件的最后一列。我使用了下面的代码。

for xxx in xxxx:
  A= xxx

  f=open("file.csv")
  data=[item for item in csv.reader(f)]
  f.close()
  new_column=[A]

  new_data=[]

  for i, item in enumerate (data):

    try:
        item.append (new_column[i])
    except  IndexError, e:
        item.append(A)
    new_data.append(item)

    f=open('outfilefinal1.csv','w')

    csv.writer(f).writerows(new_data)
    f.close()

它确实添加了一个新列作为最后一列。但问题是整个列都有一个相同的值(来自最后一个循环的值)。那么,如果我希望每个 for 循环中的 A 值作为我的最后一列,我该怎么办。谢谢。

示例输入文件

1  2
2  4 
0  9 
4  8

每个循环的一个值

3
4
0
9

所以最终文件应该显示

 1  2  3
 2  4  4
 0  9  0
 4  8  9

但在我的情况下,它显示为

 1  2  9
 2  4  9
 0  9  9
 4  8  9

【问题讨论】:

    标签: python csv append multiple-columns


    【解决方案1】:

    您的代码的问题是您在嵌套的 for 循环中覆盖了您的文件。

    A真的是一个不依赖file.csv的数组吗?然后你可以这样做:

    import csv
    
    A = compute_new_values_list()
    
    with open('file.csv') as fpi, open('out.csv', 'w') as fpo:
        reader = csv.reader(fpi)
        writer = csv.writer(fpo)
    
        #optionaly handle csv header
        headers = next(reader)
        headers.append('new_column')
        writer.writerow(headers)
    
        for index, row in enumerate(reader):
            row.append(A[index])
            writer.writerow(row)
    

    编辑:

    如果您需要一行 file.csv 来计算您的新值,您可以使用相同的代码,只需在 for 循环中计算您的新值:

    import csv
    
    with open('file.csv') as fpi, open('out.csv', 'w') as fpo:
        reader = csv.reader(fpi)
        writer = csv.writer(fpo)
    
        #optionaly handle csv header
        headers = next(reader)
        headers.append('new_column')
        writer.writerow(headers)
    
        for row in reader:
            new_value = compute_from_row(row)
            row.append(new_value)
            writer.writerow(row)
    

    【讨论】:

    • 其实A值是从file.csv读取数据后计算出来的。那样的话,我该怎么办? Tks
    猜你喜欢
    • 2013-10-16
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多