mat*_*usc 6 python hdf5 pandas
如果我使用以下代码创建带有pandas的hdf5文件:
import pandas as pd
store = pd.HDFStore("store.h5")
for x in range(1000):
store["name"+str(x)] = pd.Series()
Run Code Online (Sandbox Code Playgroud)
所有系列都是空的,为什么"store.h5"文件在hardrive上需要1.1GB空间?
简短版本:您发现了一个错误。引用GitHub 上的这个 bug:
...需要一点黑客工作(pytables 不喜欢零长度对象)
我可以在我的机器上重现此错误。只需将您的代码更改为:
import pandas as pd
store = pd.HDFStore("store.h5")
for x in range(1000):
store["name"+str(x)] = pd.Series([1,2])
Run Code Online (Sandbox Code Playgroud)
结果是一个正常的兆字节级文件。我在 Github 上找不到未解决的错误;你可以尝试举报。
我假设您已经在代码中处理了这个问题,但如果还没有,您可能应该在存储对象之前检查以确保没有数组维度为零:
toStore=pd.Series()
assert not np.prod( toStore.shape )==0, 'Tried to store an empty object!'
Run Code Online (Sandbox Code Playgroud)