我所拥有的是一个继承自DataFrame的类,但由于业务逻辑原因而覆盖了某些行为。一切都很好,但我需要能够导入和导出它们。 msgpack似乎是一个不错的选择,但实际上并不起作用。 (使用标准的msgpack库甚至不能在常规的Dataframe上工作,并且建议使用数据帧msgpack函数。)
class DataFrameWrap(pandas.DataFrame):
pass
df = DataFrameWrap()
packed_df = df.to_msgpack()
pandas.read_msgpack(packed_df)
这会导致错误
File "C:\Users\REDACTED\PROJECT_NAME\lib\site-packages\pandas\io\packers.py", line 627, in decode
return globals()[obj[u'klass']](BlockManager(blocks, axes))
KeyError: u'DataFrameWrap'
当它到达read_msgpack()行时。如果我用常规DataFrame()替换DataFrameWrap(),这是有效的。
有没有办法告诉pandas在哪里可以找到DataFrameWrap类?从阅读代码看起来,如果我可以将{" DataFrameWrap":DataFrameWrap}注入到该文件中的全局变量中,它会起作用,但我不确定如何实际执行此操作。也许有一种正确的方法可以做到这一点,但这并不明显。
答案 0 :(得分:0)
想出来。像往常一样,它比我想象的复杂得多:
from pandas.io import packers
class DataFrameWrap(pandas.DataFrame):
pass
packers.DataFrameWrap = DataFrameWrap
df = DataFrameWrap()
packed_df = df.to_msgpack()
pandas.read_msgpack(packed_df)