Сериализовать Pandas DataFrame в представление буфера в памяти - PullRequest
0 голосов
/ 27 мая 2020

Каков самый быстрый способ сериализации DataFrame в представление в памяти? На основе некоторых исследований, кажется, широко признано, что формат Apache Feather является самым быстрым из доступных форматов по большинству показателей.

Моя цель - получить сериализованные байты DataFrame - единственная проблема с Feather заключается в том, что я хотел бы избежать накладных расходов на запись и загрузку с диска, а API Feather, похоже, разрешает только файловый ввод-вывод. Есть ли другой формат, который я должен искать для этого, или, возможно, есть способ в Python «подделать» файл, заставив Feather вместо этого записывать в буфер в памяти?

1 Ответ

1 голос
/ 27 мая 2020

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())
...