DataFrame写入hdf文件失败:object header message is too large

现象

使用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

有时候也会报另外一种错误:

DataFrame写入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/756533/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球