我在 S3 上存储以 HDF 格式转储的 pandas 数据帧。我几乎被卡住了,因为我无法将文件指针、URL、s3 URL 或 StringIO 对象传递给 read_hdf
.如果我理解正确,文件必须存在于文件系统中。
来源:https://github.com/pydata/pandas/blob/master/pandas/io/pytables.py#L315
看起来它是为 CSV 实现的,但不是为 HDF 实现的。有没有比将它们复制到文件系统更好的方法来打开这些 HDF 文件?
作为记录,这些 HDF 文件正在 Web 服务器上处理,这就是我不想要本地副本的原因。
如果我需要坚持使用本地文件:有没有办法在文件系统上模拟该文件(使用真实路径),在读取完成后可以将其销毁?
我将 Python 2.7 与 Django 1.9 和 pandas 0.18.1 一起使用。
最佳答案
较新版本的 python 允许直接从 S3 读取 hdf5,如 read_hdf
documentation 中所述。 .如果可以的话,也许你应该升级 Pandas 。这当然假设您已经设置了正确的访问权限来读取这些文件:使用 credentials
文件或公共(public) ACL。
关于您的最后评论,我不确定为什么每个 df 存储几个 HDF5 必然与 HDF5 的使用相矛盾。 Pickle should be much slower than HDF5虽然 joblib.dump
可能会对此有所改善。
关于python - 在 pandas 中访问存储在 s3 上的 HDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39372806/