将列添加到现有csv文件中作为数组(Python)

时间:2016-08-13 00:40:46

标签: python list csv

有一个名为'data.csv'的csv文件,格式如下:

test1,test2,test3
1,2,3
4,5,6
7,8,9

给定格式['test4',4,7,10]的列表,如何创建一个新的csv文件'adjusted.csv',其中包含来自data.csv的所有数据和添加的列,如下所示:< / p>

test1,test2,test3, test4
1,2,3,4
4,5,6,7
7,8,9,10

3 个答案:

答案 0 :(得分:1)

读取

中的行
with open('data.csv', 'r') as fi:
    lines = [[i.strip() for i in line.strip().split(',')] \
             for line in fi.readlines()]

col = ['test4', 4, 7, 10]

将每一行与col的相应元素连接起来。使用enumerate来帮助跟踪要使用的列表索引。

new_lines = [line + [str(col[i])] for i, line in enumerate(lines)]

输出到文件

with open('adjusted.csv', 'w') as fo:
    for line in new_lines:
        fo.write(','.join(line) + '\n')

答案 1 :(得分:1)

我只是将csv视为原始文本。在每一行中加载,剥离换行符,追加新条目,然后将换行符放回。 仅当test4中的条目与data.csv中的行的顺序保持一致时才有效。

如果需要将test4添加到基于满足某些条件的行中,那将会改变很多事情。在这种情况下,您可能希望将两者都转换为Pandas数据帧,然后在所需条件下执行适当的合并。

test4 = ['test4', 4, 7, 10]

with open(data.csv, 'r') as ifile 
    with open(adjusted.csv, 'w') as ofile:
        for line, new in zip(ifile, test4):
            new_line = line.rstrip('\n') + ',' + str(new) + '\n'
            ofile.write(new_line)

您还可以将前两行压缩为:

with open(data.csv, 'r') as ifile, open(adjusted.csv, 'w') as ofile:

做任何更清楚的阅读。

答案 2 :(得分:0)

由于您使用的是csv文件,请使用readers writersimport csv new_data = ['test4', 4, 7, 10] with open(r'data.csv', 'r') as in_csv, open(r'adj_data.csv', 'w') as out_csv: reader = csv.reader(in_csv) writer = csv.writer(out_csv) for row, new_col in zip(reader, new_data): row.append(new_col) writer.writerow(row) 来提高可读性:

class ViewController: NSViewController {


@IBOutlet weak var searchField: NSSearchField!

override func viewDidLoad() {
    super.viewDidLoad()

    let maskLayer = CALayer()
    searchField.layer = maskLayer
    maskLayer.backgroundColor = searchField.backgroundColor?.CGColor
}
}