使用pandas在HDF中存储包含字符串的数据帧时的谜团

时间:2012-10-26 14:57:27

标签: python pandas hdf5

万圣节的熊猫和HDF让人感到尴尬:

df = pandas.DataFrame([['a','b'] for i in range(1,1000)])
store = pandas.HDFStore('test.h5')
store['x'] = df
store.close()

然后

ls -l test.h5
-rw-r--r-- 1 arthur arthur 1072080 Oct 26 10:50 test.h5

1.1M?有点陡峭但为什么不呢。这里的事情变得非常怪异

store = pandas.HDFStore('test.h5') #open it again
store['x'] = df #do the same thing as before!
store.close()

然后

ls -l test.h5
-rw-r--r-- 1 arthur arthur 2122768 Oct 26 10:52 test.h5

您现在已进入Twilight区域。毋庸置疑,商店在操作后无法区分,但每次迭代都会使文件更加肥胖。

似乎只有在涉及到字符串时才会发生。 在我提交错误报告之前,我想知道我是否在这里遗漏了一些东西......

2 个答案:

答案 0 :(得分:4)

似乎可能是原因:http://www.hdfgroup.org/hdf5-quest.html#del

这是一个很大的问题HDF5,wtf。

答案 1 :(得分:4)

是的:“HDF5不是数据库”。人们经常使用ptrepack(PyTables的一部分)来“重新包装”HDF5文件而没有任何死字节。