如何通过pandas而不是从文件加载pickle

问题描述 投票:3回答:1

以前的代码:

def read_pickle_packet(self, sf):
    body = self._read_payload(sf)

    return pickle.load(body)

有一个错误:ImportError:没有名为indexes.base的模块。这是由于服务器和客户端之间的pandas版本不一致造成的。我通过更改代码来解决问题:

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")

它可以解决问题。但我的问题是有更快的方法加载pickle对象而不是将其存储到文件系统然后读取它。这花费了时间和记忆。但是我无法通过谷歌“熊猫从对象读取泡菜”找到一些线索。 谢谢你的任何建议。

python pandas pickle
1个回答
1
投票

似乎pd.read_pickle仅用于从文件中读取。如果您不需要使用pandas库,则可以使用pickle.dumpspickle.loadshttps://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)
© www.soinside.com 2019 - 2024. All rights reserved.