如何使用pyarrow读取pickle文件?Pandas实现代码替换问题
报错原因
你使用的pa.read_serialized()是PyArrow早期版本的废弃接口,目前已经被完全移除,且该接口本身不兼容普通Python/pandas生成的pickle文件格式,因此会运行报错。
正确实现代码
根据你的文件存储场景选择对应方案即可:
场景1:读取pandas原生导出的pickle文件
import glob import os import pandas as pd import pyarrow as pa dfs = [] for filename in glob.glob(os.path.join(path,"../data/simulated-data-raw/", "*.pkl")): with open(filename, 'rb') as f: temp = pa.deserialize(f.read()) dfs.append(temp) # 替换已废弃的pd.DataFrame.append方法,性能更优 df = pd.concat(dfs, ignore_index=True)
场景2:读取PyArrow IPC格式存储的pkl文件
如果你的pkl文件当初是通过PyArrow接口序列化导出的,用以下代码读取:
import glob import os import pandas as pd import pyarrow as pa dfs = [] for filename in glob.glob(os.path.join(path,"../data/simulated-data-raw/", "*.pkl")): with pa.memory_map(filename, 'rb') as f: arrow_table = pa.ipc.open_file(f).read_all() temp = arrow_table.to_pandas() dfs.append(temp) df = pd.concat(dfs, ignore_index=True)
内容的提问来源于stack exchange,提问作者mossishahi
相关产品推荐
相关产品推荐

