【发布时间】:2015-05-11 15:17:50
【问题描述】:
我有一个 HDF5,大约有 13,000 行 × 5 列,这些行随着时间的推移被附加到带有 DF.to_hdf(Filename, 'df', append=True, format='table') 的同一个文件中,大小如下:
-rw-r--r-- 1 omnom omnom 807M Mar 10 15:55 Final_all_result.h5
最近我收到了ValueError,因为我试图附加到其中一列的数据比声明的列大小(2000 年,min_itemsize)长。
所以我将所有行加载到内存中,然后将它们转储到一个新的HDF 文件中一次性:
DF.to_hdf(newFilename, \
'df', \
mode='a', \
data_columns=['Code', 'ID', 'Category', 'Title', 'Content'], \
format='table', \
min_itemsize={'index': 24, \
'Code': 8, \
'ID': 32, \
'Category': 24, \
'Title': 192, \
'Content':5000 \
} \
)
我真的很惊讶新文件的大小大约是原始文件的 1/10:
-rw-r--r-- 1 omnom omnom 70M Mar 10 16:01 Final_all_result_5000.h5
我仔细检查了两个文件中的行数,它们是相等的。
我是否以错误的方式追加新行,导致每次追加操作时文件大小都成倍增加?谷歌搜索并在这里搜索,但认为之前没有讨论过这个问题,或者我搜索的关键字可能有误。
感谢任何帮助。
更新:
我尝试根据此线程中的建议为附加行中的所有数据列添加min_itemsize:pandas pytables append: performance and increase in file size:
DF.to_hdf(h5AbsPath, \
'df', \
mode='a', \
data_columns=['Code', 'ID', 'Category', 'Title', 'Content'], \
min_itemsize={'index': 24, \
'Code': 8, \
'ID': 32, \
'Category': 24, \
'Title': 192, \
'Content':5000 \
}, \
append=True \
)
但它仍然不会减小文件大小。
感谢有关添加压缩的建议,附加和新转储的文件均未按要求压缩。
【问题讨论】:
-
你用
Pytables检查过压缩吗?默认为无压缩:link
标签: python python-2.7 pandas append hdf5