用大熊猫读取HDF5数据集



我正在尝试用pandas打开一个无组的HDF5文件:

import pandas as pd
foo = pd.read_hdf('foo.hdf5')

但是我有一个错误:

typeError:如果对象不存在,则无法创建储藏器,也无法传递一个值

我尝试通过分配key来解决此问题:

foo = pd.read_hdf('foo.hdf5','key')

如果key是一个组,则可以工作,但是该文件没有组,而是最高HDF结构中的几个数据集。即工作文件的结构是:组 ->数据集,而无工作文件的结构为:数据集。两者都可以使用H5PY打开它们,我将在其中使用:

f = h5py.File('foo.hdf5','r')

dset = f['dataset']

查看数据集。有什么想法如何在大熊猫中阅读?

我认为您对不同的术语感到困惑-Pandas的HDF商店key是一条完整的路径,即Group + DataSet_name ...

演示:

In [67]: store = pd.HDFStore(r'D:temp.datahdftest.h5')
In [68]: store.append('dataset1', df)
In [69]: store.append('/group1/sub_group1/dataset2', df)
In [70]: store.groups
Out[70]:
<bound method HDFStore.groups of <class 'pandas.io.pytables.HDFStore'>
File path: D:temp.datahdftest.h5
/dataset1                              frame_table  (typ->appendable,nrows->9,ncols->2,indexers->[index])
/group1/sub_group1/dataset2            frame_table  (typ->appendable,nrows->9,ncols->2,indexers->[index])>
In [71]: store.items
Out[71]:
<bound method HDFStore.items of <class 'pandas.io.pytables.HDFStore'>
File path: D:temp.datahdftest.h5
/dataset1                              frame_table  (typ->appendable,nrows->9,ncols->2,indexers->[index])
/group1/sub_group1/dataset2            frame_table  (typ->appendable,nrows->9,ncols->2,indexers->[index])>
In [72]: store.close()
In [73]: x = pd.read_hdf(r'D:temp.datahdftest.h5', 'dataset1')
In [74]: x.shape
Out[74]: (9, 2)
In [75]: x = pd.read_hdf(r'D:temp.datahdftest.h5', '/group1/sub_group1/dataset2')
In [76]: x.shape
Out[76]: (9, 2)

最新更新