2016-07-19 2 views
-1

je le dataframe de pandas géants suivants:Comment interroger une table frame_table PyTables enregistrée via un Dataframe Pandas?

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

Alors, je crée/ouvrir un fichier HDFStore existant:

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

Pour indexer un sous-ensemble de colonnes, j'utiliser simplement

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

Apparemment, HDFStore.append() enregistre les données Panda par défaut au format table. Cependant, il semble que c'est en fait un objet 'frame_table':

store 

sorties

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

Comment puis-je index efficacement cette objet?

Normalement, la requête serait

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

Mais on ne se le faire pour un objet frame_table?

Répondre

2

frame_table - signifie qu'il s'agit d'une trame de données enregistrée au format table.

Vous avez déjà "indexé" ['colA','colB','colZ'] colonnes, lorsqu'il est utilisé data_columns=['colA','colB','colZ'] paramètre.

Alors maintenant, vous pouvez interroger votre HDFStore comme suit:

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

Vous pouvez également utiliser pd.read_hdf(...) au lieu de store.select(...)

PS la réponse pourrait être beaucoup plus propre si vous fournir un échantillon et données souhaitées ensembles ...