将 DataFrame 序列化为内存表示的最快方法是什么?根据一些研究,似乎人们普遍认为Apache Feather格式是大多数指标中最快的可用格式。
我的目标是获取 DataFrame 的序列化字节 - Feather 的唯一问题是我想避免从磁盘写入和加载的开销,而且 Feather API 似乎只允许文件 I/O。我应该为此研究一种不同的格式,还是 Python 中有一种方法可以“伪造”文件,从而迫使 Feather 改为写入内存缓冲区?
将 DataFrame 序列化为内存表示的最快方法是什么?根据一些研究,似乎人们普遍认为Apache Feather格式是大多数指标中最快的可用格式。
我的目标是获取 DataFrame 的序列化字节 - Feather 的唯一问题是我想避免从磁盘写入和加载的开销,而且 Feather API 似乎只允许文件 I/O。我应该为此研究一种不同的格式,还是 Python 中有一种方法可以“伪造”文件,从而迫使 Feather 改为写入内存缓冲区?
pyarrow
提供BufferOutputStream
写入内存而不是文件。与文档字符串相反,read_feather
还write_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())