hsn*_*nee 5 python hdf5 dataset pandas
我正在尝试用 pandas 打开一个无组 hdf5 文件:
import pandas as pd
foo = pd.read_hdf('foo.hdf5')
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
类型错误:如果对象不存在且未传递值,则无法创建存储器
我尝试通过分配一个来解决这个问题key:
foo = pd.read_hdf('foo.hdf5','key')
Run Code Online (Sandbox Code Playgroud)
如果是一个组,则该文件有效key,但该文件没有组,而是最高 hdf 结构中的多个数据集。即工作文件的结构是:Groups --> Datasets,而非工作文件的结构是:Datasets。用 h5py 打开它们时,两者都工作正常,我将使用:
f = h5py.File('foo.hdf5','r')
Run Code Online (Sandbox Code Playgroud)
和
dset = f['dataset']
Run Code Online (Sandbox Code Playgroud)
查看数据集。有什么想法如何在 pandas 中阅读此内容吗?
我认为您对不同的术语感到困惑 - Pandas 的 HDF 商店key是完整路径,即Group + DataSet_name......
演示:
In [67]: store = pd.HDFStore(r'D:\temp\.data\hdf\test.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\.data\hdf\test.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\.data\hdf\test.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\.data\hdf\test.h5', 'dataset1')
In [74]: x.shape
Out[74]: (9, 2)
In [75]: x = pd.read_hdf(r'D:\temp\.data\hdf\test.h5', '/group1/sub_group1/dataset2')
In [76]: x.shape
Out[76]: (9, 2)
Run Code Online (Sandbox Code Playgroud)