Python 如何在HDF5中存储类实例

Python 如何在HDF5中存储类实例,python,pandas,data-structures,io,hdf5,Python,Pandas,Data Structures,Io,Hdf5,TL;博士:问题在标题中。请参阅代码片段 我需要将pandas.DataFrame对象存储在类似字典的数据结构中,并将它们保存到磁盘。在我当前的实现中,我使用非嵌套的Pythondict,格式为dict[str,pandas.DataFrame],我每分钟将所有pandas.DataFrame作为csv文件保存到磁盘。然而,这两个职责(内存中的数据存储和磁盘存储)可以使用HDF5等数据结构进行优雅的统一 一个重要的限制是,我无法更改pandas.DataFrame中存储的对象类型,而且显然不是所

TL;博士:问题在标题中。请参阅代码片段

我需要将pandas.DataFrame对象存储在类似字典的数据结构中,并将它们保存到磁盘。在我当前的实现中,我使用非嵌套的Python
dict
,格式为
dict[str,pandas.DataFrame]
,我每分钟将所有
pandas.DataFrame
作为csv文件保存到磁盘。然而,这两个职责(内存中的数据存储和磁盘存储)可以使用HDF5等数据结构进行优雅的统一

一个重要的限制是,我无法更改pandas.DataFrame中存储的对象类型,而且显然不是所有对象类型都可以存储在HDF5中。原因是我正在使用预定义的数据类型实现一个第三方接口,这些数据类型需要以其本机形式进行处理。将实例映射到不同的对象(例如实例到
dict
)将需要编写额外的逻辑层来来回映射不同类型的对象(
dict
到实例),这是不好的

类似的问题和答案。但是,我不一定对以后查询存储的实例感兴趣。此外,理想情况下,我会将序列化实例所需的额外逻辑量保持在最低限度(如果需要的话)。数据压缩也不是问题。或者,一个可能的答案也可以指向一个完善的python包,该包已经封装了逻辑,将类实例存储在HDF5或类似的数据模型中

import pandas as pd


class C:
    def __init__(self, a=0):
        self.a = a

    def return_42(self):
        return self.a

df = pd.DataFrame([C()])
df.dtypes
#    0    object
#    dtype: object

store = pd.HDFStore('store1.hdf5')
store.append('c', pd.DataFrame([C()]))
#    TypeError: Cannot serialize the column [0] because 
#    its data contents are [mixed] object dtype.