我在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。
答案 0 :(得分:1)
如read_hdf
documentation中所述,较新版本的python允许直接从S3读取hdf5。如果可以的话,也许您应该升级熊猫。当然,这假定您已设置读取这些文件的正确访问权限:使用credentials
文件或使用公共ACL。
关于您的最后评论,我不确定为什么为什么要在每个df中存储多个HDF5与使用HDF5是矛盾的。 Pickle should be much slower than HDF5尽管joblib.dump
可能会对此有所改善。