由于之前的代码:
def read_pickle_packet(self, sf):
body = self._read_payload(sf)
return pickle.load(body)
出现错误:ImportError:没有名为indexs.base的模块。这是由服务器和客户端之间的熊猫版本不一致引起的。 我通过更改如下代码来解决问题:
def read_pickle_packet(self, sf):
body = self._read_payload(sf)
filehandler = open("tempFile.pkl", 'w')
filehandler.write(body)
filehandler.close()
return pd.read_pickle("tempFile.pkl")
它可以解决问题。
但是我的问题是,有没有更快速的方法来加载泡菜对象,而不是将其存储到文件系统中然后再读取它。这会花费时间和内存。但是我找不到Google提供的“熊猫从物体中读取泡菜”的线索。
谢谢您的任何建议。
答案 0 :(得分:1)
似乎pd.read_pickle
仅用于从文件读取。
如果不需要使用pandas库,则可以使用pickle.dumps
和pickle.loads
(https://docs.python.org/3/library/pickle.html)跳过保存到磁盘的操作。
我不确定这是否对您有用,因为我不清楚您的_read_payload
函数。
import pandas as pd
import pickle
x = pd.DataFrame({"x": [1,2,3], "y": [4,5,6]})
print(x)
obj = pickle.dumps(x)
z = pickle.loads(obj)
print(z)