2015-05-04 112 views
1

我試圖使用列表如何從多個列表中創建一個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'] 

與跨行

在第一列的日期和相應的值,以csv文件我已經有

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]) 

這給我帶有標題的文件。我怎樣才能完成這個?

+1

到底是什麼問題?你顯然知道如何將一個列表寫入一個CSV文件,那麼什麼讓你感到沮喪? – jonrsharpe

+0

注意:不是字符串連接,人們通常會使用(通常)更快,更清晰的「」rate- {}到{} .csv「.format(date1,date2)'。 – EOL

+0

你可以使用zip():https://docs.python.org/2/library/functions.html#zip –

回答

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])) 
+0

這是完美的謝謝! – Evelyn

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