将多个数组保存到具有列名称的csv文件中

时间:2015-11-03 05:52:40

标签: python arrays csv numpy

看起来很简单,我在网上找不到任何解决方案。基本上,我有两个数组ab,我想保存到csv文件。它将是两列。我也想添加列名。我在下面的代码中将数组转储到csv。

from np import array, savetxt

a = array([1,2,3,4])
b = array([5,6,7,8])
savetxt('submission2.csv', zip(a,b), delimiter=',', fmt='%f')

如何添加列名?我希望csv文件看起来像

Name1 Name2
 1     5
 2     6
 3     7
 4     8

奇怪的是,此选项不在savetxt函数中。 header选项确实这样做,因为它只是将注释粘贴到第一个单元格中。感谢。

编辑:数组

5 个答案:

答案 0 :(得分:10)

您可以轻松地使用pandas 软件包:

{{1}}

答案 1 :(得分:10)

使用@parent选项,如下所示:

header

生成的文件如下所示:

>>> import numpy
>>> a = numpy.array([[1,2],[3,4],[5,6]])
>>> numpy.savetxt("foo.csv", a, delimiter=',', header="A,B", comments="")

答案 2 :(得分:1)

你可以这样做:

import np import array, savetxt

a = array([1,2,3,4])
b = array([5,6,7,8])
f = open("submission2.csv", "w")
f.write("{},{}\n".format("Name1", "Name2"))
for x in zip(a, b):
    f.write("{},{}\n".format(x[0], x[1]))
f.close()

答案 3 :(得分:1)

请注意,savetxt(和loadtxt)也会使用文件句柄。

因此,如果你想要一个更高级的标题,你可以这样做:

a = array([1,2,3,4])
b = array([5,6,7,8])
with open('submission2.csv','w') as f:
    f.write('# This is a very complex header\n')
    f.write('A,B\n')
    savetxt(f, zip(a,b), delimiter=',', fmt='%f')

或者,正如已经指出的那样,使用header=str(...)参数。

答案 4 :(得分:0)

我找到了将多个numpy 1D数组保存为列的解决方案:

 import numpy as np
 data = []
 for i in single_np_arrays:
     data.append(i)
 data = np.array(data).T  #transpose the array to have proper columns
 np.savetxt('columns_from_np_arrays.csv',data,delimiter=',')