Python pandas使用read_hdf和HDFStore.select从HDF5文件中读取特定值

时间:2014-10-10 15:06:01

标签: python pandas hdf5

所以我用一个看起来像这个

的简单数据集创建了hdf5文件
>>> pd.read_hdf('STORAGE2.h5', 'table')
   A  B
0  0  0
1  1  1
2  2  2
3  3  3
4  4  4

使用此脚本

import pandas as pd
import scipy as sp
from pandas.io.pytables import Term

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

df_tl = pd.DataFrame(dict(A=list(range(5)), B=list(range(5))))

df_tl.to_hdf('STORAGE2.h5','table',append=True)

我知道我可以使用

选择列
x = pd.read_hdf('STORAGE2.h5', 'table',  columns=['A'])

x = store.select('table', where = 'columns=A')

我如何选择列'A'中等于3的所有值或特定的或带有'A'列中字符串的指示,如'foo'?在pandas数据框架中,我会使用df[df["A"]==3]df[df["A"]=='foo']

如果我使用read_hdf()store.select(),效率会有所不同吗?

1 个答案:

答案 0 :(得分:2)

您需要指定data_columns=(您也可以使用True来搜索所有列)

(仅供参考,mode='w'将启动文件,仅用于我的示例)

In [50]: df_tl.to_hdf('STORAGE2.h5','table',append=True,mode='w',data_columns=['A'])

In [51]: pd.read_hdf('STORAGE2.h5','table',where='A>2')
Out[51]: 
   A  B
3  3  3
4  4  4