将python列表作为新列添加到csv文件中

时间:2014-09-14 21:47:18

标签: python csv

我有一个包含五列的csv文件:

a1 b1 c1 d1 e1
a2 b2 c2 d2 e2
a3 b3 c3 d3 e3

我有一些列表要添加到此csv(每个列表作为新列),因此最终结果将如下所示:

a1 b1 c1 d1 e1 f1 g1 h1
a2 b2 c2 d2 e2 f2 g2 h2
a3 b3 c3 d3 e3 f3 g3 h3

我可以将这些列表保存为新的csv

outputdata=zip(list1,list2,list3,list4)
writer=CsvUnicodeWriter(open("myoutput.csv","wb"))
writer.writerows(output data)

但这并不是我所需要的。提前谢谢。

1 个答案:

答案 0 :(得分:0)

源csv和压缩列表的索引应该匹配,因此您可以使用enumerate来跟踪它。

zipped = zip(list1, list2, list3, list4)

with open('in.csv', 'rb') as infile, open('out.csv' 'wb') as outfile:
    reader = csv.reader(infile)
    writer = csv.writer(outfile)
    for i, row in enumerate(reader):
        row.extend(zipped[i])
        writer.writerow(row)

如果您正在进行大量此类数据争论,请查看pandas库。 熊猫代码有点简单,虽然你必须习惯pandas api,它基于索引标签和矢量化操作。

indata = pd.read_csv('in.csv')
zipped = pd.DataFrame(zip(List1, List2, List3, List4)
#axis=1 indicates to concat the frames column wise
outdata = pd.concat([indata, zipped], axis=1)
#we dont want headers and dont want the row labels
outdata.to_csv('out.csv', header=False, index=False)