确定 pandas HDF 文件中 DataFrame 的格式
Determine format of a DataFrame in pandas HDF file
有一个HDF文件'file.h5',其中保存的pandas DataFrame(或Series)的键名是'df'。如何确定 'df' 以何种格式(即“固定”或“table”)保存到文件中?
感谢您的帮助!
默认使用的格式是 "fixed",它允许快速 read/write 功能,但既不可追加也不可搜索。
但是,您甚至可以明确指定要将其保存在 hdf5 文件中的格式,如下所示:
df.to_hdf('file.h5', key='df', mode='w', format='table')
注意 - 上述命令只是为了说明格式参数的使用而选择的示例。参数的值可以根据您的要求保留。
有关与此相关的任何进一步参考,您还可以访问下面的 pandas 文档页面:
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_hdf.html
希望以上信息对您有所帮助。
有点晚了,但也许其他人会觉得有用。
您可以解析 HDFStore.info()
的输出。 table
格式的对象具有类型 appendable
:
>>> print(h5_table.info())
<class 'pandas.io.pytables.HDFStore'>
File path: /tmp/df_table.h5
/df frame_table (typ->appendable,nrows->2,ncols->2,indexers->[index],dc->[])
>>> print(h5_fixed.info())
<class 'pandas.io.pytables.HDFStore'>
File path: /tmp/df_fixed.h5
/df frame (shape->[2,2])
这是一个最小的(即没有丢失文件或密钥的错误处理)示例:
def get_hd5_format(path, key):
with pd.HDFStore(path) as store:
info = store.info()
return 'table' if 'typ->appendable' in next(k for k in info.splitlines()[2:] if k.startswith('/'+key)).split()[2] else 'fixed'
用法示例:
>>> get_hd5_format('/tmp/df_table.h5', 'df')
'table'
>>> get_hd5_format('/tmp/df_fixed.h5', 'df')
'fixed'
有一个HDF文件'file.h5',其中保存的pandas DataFrame(或Series)的键名是'df'。如何确定 'df' 以何种格式(即“固定”或“table”)保存到文件中?
感谢您的帮助!
默认使用的格式是 "fixed",它允许快速 read/write 功能,但既不可追加也不可搜索。
但是,您甚至可以明确指定要将其保存在 hdf5 文件中的格式,如下所示:
df.to_hdf('file.h5', key='df', mode='w', format='table')
注意 - 上述命令只是为了说明格式参数的使用而选择的示例。参数的值可以根据您的要求保留。
有关与此相关的任何进一步参考,您还可以访问下面的 pandas 文档页面:
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_hdf.html
希望以上信息对您有所帮助。
有点晚了,但也许其他人会觉得有用。
您可以解析 HDFStore.info()
的输出。 table
格式的对象具有类型 appendable
:
>>> print(h5_table.info())
<class 'pandas.io.pytables.HDFStore'>
File path: /tmp/df_table.h5
/df frame_table (typ->appendable,nrows->2,ncols->2,indexers->[index],dc->[])
>>> print(h5_fixed.info())
<class 'pandas.io.pytables.HDFStore'>
File path: /tmp/df_fixed.h5
/df frame (shape->[2,2])
这是一个最小的(即没有丢失文件或密钥的错误处理)示例:
def get_hd5_format(path, key):
with pd.HDFStore(path) as store:
info = store.info()
return 'table' if 'typ->appendable' in next(k for k in info.splitlines()[2:] if k.startswith('/'+key)).split()[2] else 'fixed'
用法示例:
>>> get_hd5_format('/tmp/df_table.h5', 'df')
'table'
>>> get_hd5_format('/tmp/df_fixed.h5', 'df')
'fixed'