在python中向csv文件添加一个新列

时间:2016-09-27 19:49:28

标签: python python-2.7 csv

我正在尝试将列添加到csv文件中,该文件组合了来自其他两列的字符串。每当我尝试这个时,我要么得到一个只有新列的输出csv,要么输出包含所有原始数据而不是新列。

这是我到目前为止所做的:

with open(filename) as csvin:
    readfile = csv.reader(csvin, delimiter=',')
    with open(output, 'w') as csvout:
        writefile = csv.writer(csvout, delimiter=',', lineterminator='\n')
        for row in readfile:
            result = [str(row[10]) + ' ' + str(row[11])]
            writefile.writerow(result)

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:2)

没有输入要测试,但试试这个。您当前的方法不包括输入数据中已存在的每一行的现有数据。 extend将获取代表每一行的列表,然后将另一项添加到该列表中......相当于添加一列。

import CSV
with open(filename) as csvin:
    readfile = csv.reader(csvin, delimiter=',')
    with open(output, 'w') as csvout:
        writefile = csv.writer(csvout, delimiter=',', lineterminator='\n')
        for row in readfile:
            row.extend([str(row[10]) + ' ' + str(row[11])])
            writefile.writerow(row)

答案 1 :(得分:0)

我认为glayne希望将第10列和第11列合并为一个。 在我的方法中,我专注于如何首先转换单行:

notify: true

经过测试以确保其有效,我可以继续替换所有行:

def transform_row(input_row):
    output_row = input_row[:]
    output_row[10:12] = [' '.join(output_row[10:12])]
    return output_row

请注意,我使用with open('data.csv') as inf, open('out.csv', 'wb') as outf: reader = csv.reader(inf) writer = csv.writer(outf) writer.writerows(transform_row(row) for row in reader) 方法在一个语句中写入多行。

答案 2 :(得分:0)

下面的代码段将每行中第10列和第11列中的字符串组合在一起,并将其添加到每行的末尾

import csv
input = 'test.csv'
output= 'output.csv'
with open(input, 'rb') as csvin:
    readfile = csv.reader(csvin, delimiter=',')
    with open(output, 'wb') as csvout:
        writefile = csv.writer(csvout, delimiter=',', lineterminator='\n')
        for row in readfile:
            result = row + [row[10]+row[11]]
            writefile.writerow(result)