如何在Python中将多个列保存为多个列?

时间:2017-03-06 16:25:21

标签: python excel csv

我抓取了信息,并将其存储在多个列表中:

list1 = [item1, item2,item3...]
list2 = [i1,i2,i3...]
list3 = [it1,it2,it3..]

如何编写将其保存为CSV文件的代码,以便在Excel中下载时看起来如下所示?

Column 1 Column 2 Column 3
item1      i1        it1
item2      i2        it2

2 个答案:

答案 0 :(得分:1)

使用csv:

import csv

list1 = ['1','2','3']
list2 = ['4','5','6']

with open('file.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(list1)
    writer.writerow(list2)

这会将列表的内容写入csv的每一行。如果你想要标题名称和索引列,我也不清楚。根据您遇到的实际问题,可能更容易使用pandas,它将为您提供第一列中行的名称以及列名称:

import pandas as pd

list1 = ['1','2','3']
list2 = ['4','5','6']

df = pd.DataFrame({'list1': list1,
                   'list2': list2})

df.transpose().to_csv('file.csv')

答案 1 :(得分:0)

Python的zip内置函数将N个迭代器作为输入(如N列表),并返回一个迭代器,每次迭代器产生每个迭代器中的第一个项 - 并且可以在声明。

最终效果是它会转换一组列表,就像你需要的那样:

import csv

# define lists:
...

with open("output.csv", "wt") as file:
    writer = csv.writer(file)
    writer.writerow(["column1", column2", ...]
    for row in zip(list1, list2, list3,...):
         writer.writerow(row)