pyarrow pq.read_table(my_parquet).to_pandas()是否将数据放入内存两次?

问题描述 投票:0回答:1

所以我的问题是使用 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()

python pandas pyarrow in-memory
1个回答
0
投票

您可以添加

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

© www.soinside.com 2019 - 2024. All rights reserved.