将 Pandas DataFrame 序列化为内存缓冲区表示

PK1*_*123 2 python dataframe pandas feather

将 DataFrame 序列化为内存中表示的最快方法是什么?根据一些研究,人们似乎普遍认为Apache Feather格式是大多数指标中最快的可用格式。

我的目标是获取 DataFrame 的序列化字节 - Feather 的唯一问题是我想避免写入磁盘和从磁盘加载的开销,并且 Feather API 似乎只允许文件 I/O。我是否应该为此寻找不同的格式,或者Python中是否有一种方法可以“伪造”文件,强制 Feather 写入内存缓冲区?

Uwe*_*orn 7

pyarrow提供BufferOutputStream写入内存而不是文件的功能。与文档字符串相比,read_featherwrite_feather支持从内存读取/写入编写器接口。

使用以下代码,您可以将 DataFrame 序列化到内存中,而无需访问文件系统,然后直接再次重建它。

from pyarrow.feather import read_feather, write_feather
import pandas as pd
import pyarrow as pa

df = pd.DataFrame({"column": [1, 2]})
output_stream = pa.BufferOutputStream()
write_feather(df, output_stream)
df_reconstructed = read_feather(output_stream.getvalue())
Run Code Online (Sandbox Code Playgroud)