如何查询通过 Pandas Dataframe 保存的 PyTables frame_table?
How to query a PyTables frame_table saved via a Pandas Dataframe?
我有以下 pandas 数据框:
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
格式保存 pandas 个数据帧。然而,看起来它实际上是一个 '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
对象这样做吗?
frame_table
- 表示它是以 table
格式保存的数据帧。
当使用 data_columns=['colA','colB','colZ']
参数时,您已经有 "indexed" ['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 如果您提供样本和所需的数据集,答案可能会更简洁...
我有以下 pandas 数据框:
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
格式保存 pandas 个数据帧。然而,看起来它实际上是一个 '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
对象这样做吗?
frame_table
- 表示它是以 table
格式保存的数据帧。
当使用 data_columns=['colA','colB','colZ']
参数时,您已经有 "indexed" ['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 如果您提供样本和所需的数据集,答案可能会更简洁...