2013-11-28 56 views
0

我有兩個名單列出,當我單獨打印出來使用:寫下一列在csv_python

writer.writerows(list_) 

我得到

LIST_1:

0 -0.00042 0.004813 0.010428 0.051006 
1 0.000053 0.004531 0.010447 0.051962 
2 0.000589 0.004518 0.009801 0.052226 
3 0.000083 0.004581 0.010362 0.052288 
4 -0.000192 0.003726 0.011258 0.051094 
5 0.000281 0.004078 0.01008  0.052156 

list_2:

-0.000419554 -0.000366128 0.000223134  0.000306416  0.000114709 

我已經過了整整一天ying將list_2作爲另一列添加到list_1並將它們寫入一個csv文件。我認爲這是直截了當的,但卡住了。我感謝任何幫助。

+0

所以,是LIST_1列表的列表? –

+1

你嘗試過什麼沒有用? –

+0

list_2的元素應該被寫爲新行,還是每個元素都應該寫在list_1的其中一行的末尾?如果list_2中沒有足夠的元素,您希望發生什麼?此示例顯示list_2中的五個元素和六個行中的list_1。 –

回答

1

下面是一個例子,不知道你的數據是什麼樣子,所以我猜測:

list_1 = [ 
    [1,2,3], 
    [4,5,6], 
    [7,8,9], 
] 
list_2 = [10,20,30] 

list_1 = [row + [col] for row, col in zip(list_1, list_2)] 
for row in list_1: 
    print row 

輸出:

[1, 2, 3, 10] 
[4, 5, 6, 20] 
[7, 8, 9, 30] 

現在LIST_1已list_2作爲新列,你可以使用csv模塊將其寫出。

它結合列從列表(或其他iterables)的兩個列表
+0

感謝Hai Vu。工作了! – PyLearner

+2

請注意,如果使用'zip'的這個和其他任何解決方案的長度不相等,它們將截斷爲較短的列表。評論說他們是平等的,所以這可能無關緊要,但示例列表的長度不同。 –

+0

好點,謝謝@PeterDeGlopper – PyLearner

3

的一般解:

import csv 
import itertools 
import sys 

def combine_columns(iterable1, iterable2): 
    for x, y in itertools.izip(iterable1, iterable2): 
     yield list(x) + list(y) 

list1 = [[11, 12, 13], [21, 22, 23]] 
list2 = [[14, 15], [24, 25]] 
writer = csv.writer(sys.stdout) 
writer.writerows(combine_columns(list1, list2)) 

輸出:

11,12,13,14,15 
21,22,23,24,25 
+1

我可能會用一個生成器表達式而不是一個新的生成器定義來做到這一點:'iterator.izip中的writer.writerows(list(x)+ list(y) list_1,list_2))'。但要點一般性。 –

+0

爲什麼我會得到'TypeError:'numpy.float64'object is not iterable'using this code? – PyLearner

+0

@PLeLearner使用二維數組,而不僅僅是平面數組。例如:'numpy.array([[14,15],[24,25]],dtype = numpy.float64)' – alexanderlukanin13