为什么我将多个空的Pandas系列放入hdf5,hdf5的大小如此之大?

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空间?

And*_*eus 2

简短版本:您发现了一个错误。引用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)