我在服务器上运行此代码:
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'
任何想法如何解决此问题?
答案 0 :(得分:1)
我实施的解决方案有点像黑客。
在将DataFrame
发送到客户端之前,每个dict
都会转换为dict
,并且假定每个密钥中具有相同项目数的每个DataFrame
都来自{pandas
1}}。
即使客户端和服务器安装了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)
res.render('route/to/view', {data: result, moredata: resultTwo})