2016-07-19 5 views
2

私は、次のパンダのデータフレームがあります。今Pandas DataFrameをHDFS PyTablesテーブル(またはCArray、EArrayなど)としてどのように格納しますか?

import pandas as pd 
df = pd.read_csv(filename.csv) 

を、私は(Pythonの辞書にキーと値のペアを追加するように)ファイルにdfオブジェクトを書き込むためにHDFStoreを使用することができます。

store = HDFStore('store.h5') 
store['df'] = df 

http://pandas.pydata.org/pandas-docs/stable/io.html

コンテンツを見ると、このオブジェクトはframeです。

store 

出力

<class 'pandas.io.pytables.HDFStore'> 
File path: store.h5 
/df   frame  (shape->[552,23252]) 

しかし、索引付けを使用するために、一方がtableオブジェクトとしてこれを保存するべきです。

私のアプローチはHDFStore.put()すなわち

HDFStore.put(key="store.h", value=df, format=Table) 

を試してみましたが、これはエラーで失敗します。

TypeError: put() missing 1 required positional argument: 'self' 

どのように1はPyTablesテーブルとしてパンダデータフレームを保存しますか?

答えて

2

共通部分 - 既存のHDFStoreファイルを作成またはオープン:あなただけのインデックスを作成しているしたい場合は

store.append('key_name', df, data_columns=True) 

またはこの:

store = pd.HDFStore('store.h5') 

をあなたはすべて列をインデックス化しているしたい場合は、これを試してみてください列のサブセット:

store.append('key_name', df, data_columns=['colA','colC','colN']) 

PS HDFStore.append()は受け入れ答えに追加table形式

+0

ありがとうございます。これをCArrayまたはEArrayとしてどのように保存しますか? – JianguoHisiang

+0

@JianguoHisiang、私はCArray/EArrayの経験がないので、あなたの質問には答えられません。しかし、HDFStoreの何が間違っていますか?私の答えは助けになりましたか? – MaxU

+0

はい、正しいです。しかし、私はこの 'frame_table'オブジェクトを照会する方法がわかりません( 'table'オブジェクトではありません)。通常、 'col1'が索引付けされている場合は、 ' result = [table.where( 'col1> 100&col1 <200')] 'の行の行を試します。 – JianguoHisiang

0

How does one save Pandas Dataframes as PyTables tables?

にデフォルトごとのDFを保存し、いつでもPyTableファイルを閉じる必要があります。便宜上、PandasはコンテキストマネージャとしてHDFStoreを提供しています。

with pd.HDFStore('/path/to/data.hdf') as hdf: 
    hdf.put(key="store.h", value=df, format='table', data_columns=True) 
関連する問題