2016-07-19 5 views
-1

私は、次のパンダのデータフレームがあります。Pandas Dataframe経由で保存されたPyTablesフレームテーブルを照会するには?

import pandas as pd 
df = pd.read_table('fname.dat') 

だから、私は既存のHDFStoreファイル開く/作成:、列のインデックスに

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

サブセットを私は単純に使用

store.append('key_name', df, data_columns=['colA','colB','colZ']) 

明らかに、HDFStore.append()はデフォルトあたりのパンダのデータフレームをtableフォーマットで保存します。しかし、それは実際には 'frame_table' オブジェクトであるように見えます:

store 

出力

/key_name   frame_table (typ->appendable,nrows->3254334,ncols->14,indexers->[index],dc->[colA, colB, colZ]) 

どのように効率的にインデックスこのオブジェクトを行いますか?

通常、クエリが

result = [row for row in table.where('colA==22 & colB==45')] 

だろうしかし、一つはframe_tableオブジェクトに対してこの操作を行うんでしょうか?

答えて

2

frame_table - つまり、table形式で保存されたデータフレームです。

data_columns=['colA','colB','colZ']パラメータを使用した場合、既に「インデックスされた」['colA','colB','colZ']カラムがあります。

だから今、次のようにあなたのHDFStoreを照会することができます

store = pd.HDFStore('store.h5') 
varA = 100 
varZ = 'string_value' 
df = store.select('key_name', where='colA >= varA & colZ == varZ') 

代わりに、あなたがサンプルと所望のデータを提供する場合答えははるかにきちんとした可能性が代わりにstore.select(...)

PSのpd.read_hdf(...)を使用することができます...

関連する問題