如何通过熊猫而不是从文件中加载泡菜

时间:2018-09-05 07:59:56

标签: python pandas pickle

由于之前的代码:

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提供的“熊猫从物体中读取泡菜”的线索。
谢谢您的任何建议。

1 个答案:

答案 0 :(得分: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)