我有一个包含五列的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)
但这并不是我所需要的。提前谢谢。
答案 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)