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

时间:2015-06-04 19:11:03

标签: python pandas hdf5

如果我使用以下代码创建带有pandas的hdf5文件:

import pandas as pd

store = pd.HDFStore("store.h5")

for x in range(1000):
    store["name"+str(x)] = pd.Series()

所有系列都是空的,为什么“store.h5”文件在hardrive上占用1.1GB空间?

1 个答案:

答案 0 :(得分:2)

简短版:您发现了一个错误。引用this bug on GitHub

  

...需要一点hackjob(pytables不像零长度的对象)

我可以在我的机器上重现此错误。只需将代码更改为:

import pandas as pd
store = pd.HDFStore("store.h5")
for x in range(1000):
    store["name"+str(x)] = pd.Series([1,2])

生成一个合理的兆字节级文件。我在Github上找不到一个开放的bug;您可以尝试报告它。

我认为您已经在代码中处理了该问题,但如果您还没有,那么您应该检查以确保在存储对象之前没有数组维度为零:

toStore=pd.Series()
assert not np.prod( toStore.shape )==0, 'Tried to store an empty object!'