web-dev-qa-db-ja.com

列名を含むcsvファイルに複数の配列を保存する

見た目は簡単ですが、オンラインで質問の解決策を見つけることができませんでした。基本的に、CSVファイルに保存する2つの配列abがあります。 2列になります。列名も追加したいと思います。以下のコードを使用して、配列を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オプションは、最初のセルにコメントを貼り付けるだけなので、それを行います。ありがとう。

編集:配列

12
Koba

次のように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
12
Burhan Khalid

あなたは 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)
16

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(...)引数を使用します。

2
zeroth

あなたはこのようにすることができます:

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()
1
Hackaholic

複数の派手な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=',')
0
Dawid