Pandas 镶木地板不进入文件系统,但在变量中获取结果文件的内容

Pandas to parquet NOT into file-system but get content of resulting file in variable

从 pandas 到 parquet 的转换有多种方法。例如pyarrow.Table.from_pandas 或 dataframe.to_parquet 。它们的共同点是它们将一个 filePath 作为参数获取,df.parquet 应该存储在该文件路径中。

我需要将写入的 parquet 文件的内容放入一个变量中,但还没有看到这个。主要是我想要与 pandas.to_csv 相同的行为,如果没有提供路径,returns 结果作为字符串。

当然,我可以直接写入文件并使用标准文件读取操作将其从 python 读取到字符串中。当我写入大量数据时,这会对文件系统产生大量负载......

您可以为此使用 io.BytesIO,或者 Apache Arrow 也提供其本机实现 BufferOutputStream。这样做的好处是写入流时没有通过 Python 的开销。因此减少了副本并释放了GIL。

import pyarrow as pa
import pyarrow.parquet as pq

df = some pandas.DataFrame
table = pa.Table.from_pandas(df)
buf = pa.BufferOutputStream()
pq.write_table(table, buf)
# buf now contains the Parquet file in memory.