所以我的问题是使用 PyArrow 的
pq.read_table('dataset.parq').to_pandas()
是否会在内存中保存所读取数据的两倍。
一个用于保存 py 箭头表,因为
pq.read_table('dataset.parq')
以及在执行 .to_pandas()
时第二次以数据帧格式保存。
我有一个生成器,可以生成
pa.RecordBatch.from_arrays()
对象,并且希望尽可能减少内存使用。我当前的方法是创建一个表列表,然后使用 pa.Table.from_batches
创建一个 large_table
,最后使用 large_table.to_pandas()
。然而,这里我在内存中有两个对象:1)large_table
(pyarrow表列表的内存视图)和2)pandas数据框。
我唯一的想法是我可以通过写入 parquet 文件然后读取 pandas 数据帧来实现这一点?但现在我怀疑
pq.read_table('dataset.parq').to_pandas()
。
您可以添加
zero_copy_only=True
来强制/测试是否已制作副本:
large_table.to_pandas(zero_copy_only=True)
参见https://arrow.apache.org/docs/python/ generated/pyarrow.Table.html#pyarrow.Table.to_pandas