2016-07-19 26 views
-1

我有以下的熊猫数据框:如何查询通过Pandas Dataframe保存的PyTables frame_table?

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') 

或者您可以使用pd.read_hdf(...)代替store.select(...)

PS的答案可能会更加整洁,如果你能提供样品和所需数据套...

相关问题