2015-11-03 78 views
2

看起來很簡單,我在網上找不到任何解決方案。基本上,我有兩個數組ab,我想保存到一個csv文件。它將是兩列。我也想添加列名。下面的代碼用於將數組轉儲到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選項會這樣做,因爲它只是將註釋粘貼到第一個單元格中。謝謝。

編輯:數組

+0

第一行是在那裏你會放列名;你想要排名嗎?你能舉一個你想要文件看起來像樣的樣本嗎? –

+0

@BurhanKhalid添加詳細信息 – Koba

回答

6

使用header選項,如:

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

生成的文件是這樣的:

A,B 
1.000000000000000000e+00,2.000000000000000000e+00 
3.000000000000000000e+00,4.000000000000000000e+00 
5.000000000000000000e+00,6.000000000000000000e+00 
+0

是否有將列添加到現有csv文件的方法?另外,我怎樣才能擺脫電子? – duldi

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() 
8

您可以pandas包輕鬆地做到這一點:

import pandas as pd 
import numpy as np 

a = np.array([1,2,3,4]) 
b = np.array([5,6,7,8]) 

df = pd.DataFrame({"name1" : a, "name2" : b}) 
df.to_csv("submission2.csv", index=False) 
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(...)說法。

0

我已經找到了保存多個numpy的一維數組作爲列的解決方案:

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=',') 
相關問題