2017-07-09 4 views
2

numpy/pandasの列ヘッダーの名前を事前定義して構造化配列を作成する必要がなくなり、代わりにnumpy/pandasをヘッダー名として最初の行に読み込み、残りのデータを構造化配列ですか?例えば。このデータのために、Numpy - 名前として最初の行が構造化配列にすぐにロードされますか?

#  Date  low open close 
# 2015-08-08 266.00 280.04 266.82 
# 2015-07-08 233.00 280.04 266.82 

私はa = pd.read_csv()のようないくつかの関数を呼び出すとnames = [Date, low, open, close]を事前に定義し、read_csv()にそれを渡すことなく、a['Date']としてすぐに列にアクセスできるようにしたいでしょう。これは可能ですか?

+0

'genfromtxt'は' names = True、dtype = None'をとります。 'loadtxt'は何か類似しているはずです。コメントを無効にする必要があるかもしれません。 – hpaulj

+0

'#'は本当にファイルの一部ですか? – hpaulj

答えて

0

namesread_csvにある場合、最初の行のデータはdfの列を作成します。

だから、仕事:

df = pd.read_csv('file.csv') 
#if necessary change default parameter sep=',' 
df = pd.read_csv('file.csv', sep=';') 
print (df) 
     Date low open close 
0 2015-08-08 266.0 280.04 266.82 
1 2015-07-08 233.0 280.04 266.82 

print (df.columns) 
Index(['Date', 'low', 'open', 'close'], dtype='object') 
1

完全を期すために、numpyの例:

rec_arr = np.genfromtxt("try.csv", delimiter = " ", names=True, dtype=None) 
rec_arr 
array([(b'2015-08-08', 266., 280.04, 266.82), 
     (b'2015-07-08', 233., 280.04, 266.82)], 
     dtype=[('Date', 'S10'), ('low', '<f8'), ('open', '<f8'), ('close', '<f8')]) 

をその後、あなたは次のように列にアクセスすることができます

rec_arr['close'] 
array([ 266.82, 266.82]) 

といくつかの計算を行います通常通り:

rec_arr['close'].mean() 
266.81999999999999 
関連する問題