如何从多个列表中制作CSV文件?

时间:2015-05-04 12:35:27

标签: python csv

我正在尝试使用列表

创建一个csv文件
['2005-04-18', '2005-04-19', '2005-04-20']

['1', '1', '1']

['0.7683', '0.766664', '0.764696']

['1.380162', '1.373308', '1.358544']

第一列中的日期和行中的相应值

我已经

with open((os.path.join('data','hist', 'rates-'+date1+' to ' +date2+ '.csv')), 'wt') as my_csv:
    csv_writer = csv.writer(my_csv, lineterminator='\n')
    csv_writer.writerow(["Date",curr1, curr2, curr3])  

它给我带有标题的文件。我怎么能完成这个?

2 个答案:

答案 0 :(得分:3)

使用循环来处理您拥有的数组元素。

a = ['2005-04-18', '2005-04-19', '2005-04-20']
b = ['1', '1', '1']
c = ['0.7683', '0.766664', '0.764696']
d = ['1.380162', '1.373308', '1.358544']

您可以使用zip从列表中创建元组并编写它们:

for row in zip(a, b, c, d):
    csv_writer.writerow(row)

或者您可以自己使用字符串格式并将其打印到文件中(不使用csv_writer):

for i in range(len(a)):
    csv_writer.writerow('{}, {}, {}, {}'
        .format(a[i], b[i], c[i], d[i]))

答案 1 :(得分:0)

如果你有pandas,你可以这样做(从0.20开始工作)。首先,将数据加载到数据框中:

a = ['2005-04-18', '2005-04-19', '2005-04-20']
b = ['1', '1', '1']
c = ['0.7683', '0.766664', '0.764696']
d = ['1.380162', '1.373308', '1.358544']

df = pd.DataFrame([a, b, c, d]).T # pass in a list of lists

print(df)

            0  1         2         3
0  2005-04-18  1    0.7683  1.380162
1  2005-04-19  1  0.766664  1.373308
2  2005-04-20  1  0.764696  1.358544

现在,重命名您的列:

df.columns = ['A', 'B', 'C', 'D'] # set the column headers

现在,保存为CSV:

df.to_csv('out.csv') # call df.to_csv to save to csv