使用 Pandas HDFStore 以只读模式打开文件

Posted

技术标签:

【中文标题】使用 Pandas HDFStore 以只读模式打开文件【英文标题】:use Pandas HDFStore to open file in read only mode 【发布时间】:2018-07-27 15:08:19 【问题描述】:

我需要 Pandas 版本之间的兼容性,所以 pickle 还不够,我存储了一堆这样的数据帧:

import pandas as pd

hdf = pd.HDFStore('storage.h5')
hdf.put('mydata', df_mydata)

...然后像这样把它们带回来:

df_mydata = hdf.get('df_mydata')

问题是,在Python 中,您通常可以像这样以只读方式打开文件:

f = open('workfile', 'r')

我保存了数据框以供本地使用,因为它需要很长时间,并且会迫使服务器将它们从 SQL 中提取出来。如何打开这些.h5 文件以免意外更改它们?

【问题讨论】:

这可能听起来很讽刺,但我是真诚的。如果您不想更改文件,请不要编写可以更改的代码。或者您可以复制文件并打开副本? 我相信自己不会编写会改变它的代码吗?.. Linux 有读写执行权限,Python 有这种只读模式,但也许它们都是多余的特性,比如安全带.. docs中的mode='r' Ignored if path_or_buf is a pd.HDFStore是什么意思? read_hdf 是否总是引用 pd.HDFStore 对象? 我不知道@Evan,但它确实违反了 KISS 原则,并且让你对mode 的论点缺乏信心。几周后我发现自己只需要再次阅读,只需输入mode='r' 并希望它不会忽略它。 【参考方案1】:

试试:

hdf = pd.HDFStore('storage.h5', 'r')

这个类来自 pytables。你可以在这里阅读文档:pytables

【讨论】:

以上是关于使用 Pandas HDFStore 以只读模式打开文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pandas 从大型 HDFStore 表中提高查询性能

获取 HDF5 内容列表(Pandas HDFStore)

Pandas HDFStore:省略重复项

pandas.HDFStore:如何修改现有商店的“data_columns”?我想为不在数据列中的列添加索引

Python pandas 'HDFStore requires PyTables' Issue

Python Pandas hdfstore 的 select(where='') 返回不合格的结果