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)
我是运行服务器上的这个代码:
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)