unpickling pandas 数据帧时出错

Error when unpickling pandas dataframe

我是运行服务器上的这个代码:

import pandas as pd
import numpy as np
df=pd.DataFrame(np.arange(100).reshape(25,4))
pickled=pickle.dumps(df)
print repr(pickled)

以及读取服务器标准输出的客户端上的这段代码

import pandas as pd
import numpy as np
pickled=eval(read_from_server())
df=pickle.loads(pickled)

出于某种原因,我收到此错误:

AttributeError: 'module' object has no attribute '_new_Index'

有什么办法可以解决这个问题吗?

我实施的解决方案有点乱七八糟。

每个 DataFrame 在发送到客户端之前都被转换为 dict,并且每个 dict 在每个键中具有相同数量的项目被假定为源自DataFrame.

即使客户端和服务器安装了不同版本的 pandas,此方法也有效。

在服务器端:

if type(ret)==pd.DataFrame:
    ret=ret.to_dict()
pickled=pickle.dumps(ret)
send_to_client(repr(pickled))

在客户端:

    pickled=eval(read_from_server())
    ret=pickle.loads(pickled)
    if (type(ret)==dict):
        #if all the dictionary keys have the same number of records:
        if len(set([len(ret[k]) for k in ret.keys()]))==1:
            ret=pd.DataFrame(ret)