Python:将单个列表写为csv中的列

时间:2012-08-14 02:20:48

标签: python csv

我正在为每个数据项创建列表,我有以下数据结构,并且在迭代结束时有6个包含数据点的列表。每个列表都有相同的长度,我想生成每个列表作为csv文件列

示例:

columnOfList1, columnOfList2...

这是我生成多个数据列表的代码:我无法想象的是生成csv文件。

for (fn1, lst1), (fn2, lst2) in product(dict1.iteritems(), dict2.iteritems()):
    for vector1, vector2 in zip(lst1, lst2):

3 个答案:

答案 0 :(得分:4)

正如您所说,每个列表都有相同的长度。你为什么不用这个长度做“for”?

示例:

for i in range(len(some_list)):
    print lst[i], lst2[i], lst3[i], lst4[i], lst5[i]

答案 1 :(得分:1)

将行转换为列表只是翻译。只需使用zip

完成
>>> foo
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
>>> zip(*foo)
[(0, 0, 0, 0, 0), (1, 1, 1, 1, 1), (2, 2, 2, 2, 2), (3, 3, 3, 3, 3), (4, 4, 4, 4, 4)]

所以你可以做到

>>> lsts = [l[1] for l in product(yourdicts)]
>>> csvwriter.writerows(zip(*lsts))

答案 2 :(得分:1)

您可以使用numpy.savetxt。首先将数组堆叠成列:

>>> import numpy as np
>>> col1 = np.array([1,2,3])
>>> col2 = np.array([4,5,6])
>>> output = np.vstack((col1, col2)).T
>>> output
array([[1, 4],
       [2, 5],
       [3, 6]])

然后把它写出来。你可以传递一个文件名,但在这里我用StringIO来显示输出:

>>> from StringIO import StringIO
>>> s = StringIO()
>>> np.savetxt(s, output, delimiter=',', fmt='%.7g')
>>> print s.getvalue()
1,4
2,5
3,6