我正在为每个数据项创建列表,我有以下数据结构,并且在迭代结束时有6个包含数据点的列表。每个列表都有相同的长度,我想生成每个列表作为csv文件列
示例:
columnOfList1, columnOfList2...
这是我生成多个数据列表的代码:我无法想象的是生成csv文件。
for (fn1, lst1), (fn2, lst2) in product(dict1.iteritems(), dict2.iteritems()):
for vector1, vector2 in zip(lst1, lst2):
答案 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