现象
使用hdf5文件的API,直接把DataFrame写入hdf文件:
import pandas as pd
df = pd.DataFrame(index=index, columns=columns)
df .to_hdf('test.hdf5', 'data', format='t', mode='w')
to_hdf一行报错:
object header message is too large
有时候也会报另外一种错误:
解决
通过查看文档说明,可以发现HDF5对列头有最大长度限制,限制是64kb。
这64kb包括列名、数据类型等元素,所以table模式下,最多可存储2000列左右。
这是pytables的基本限制,如果超过它,要么分割成多个table,要么用fixed模式。
df .to_hdf('test.hdf5', 'data', format='f', mode='w')
fixed模式不支持追加数据,如果要追加数据,也可以通过其他方式来达到目的,如重刷数据、指定不同的key作区分等。
小结
对于接口API的限制,由于文档阅读较少,出现一些问题后往往不知所措。
其实详细阅读文档可以减少犯错的机会,这就相当于节省了很多时间呢。
参考资料
pandas.read_hdf
pandas.DataFrame.to_hdf
Unable to save DataFrame to HDF5
Original: https://blog.csdn.net/guotianqing/article/details/122143073
Author: guotianqing
Title: DataFrame写入hdf文件失败:object header message is too large
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/678427/
转载文章受原作者版权保护。转载请注明原作者出处!