PyArrow表:筛选行

2024-04-28 17:59:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个来自血浆数据存储的RecordBatch,我可以读入pyarrow.RecordBatchpyarrow.Table。我现在尝试在将行转换为pandas(to_pandas)之前过滤掉行

有没有一种方法可以在pyarrow.Table上使用新数据集API中的filter方法(您可以在ParquetDataset上使用)?这将允许我为我们提供如下过滤器:

[[('date', '=', '2020-01-01')]]

查看源代码pyarrow.Tablepyarrow.RecordBatch似乎都有一个筛选函数,但至少RecordBatch需要一个布尔掩码

这可能吗?原因是数据集包含大量不是零拷贝的字符串(和/或类别),因此运行to_pandas实际上会引入显著的延迟,我只查找数据集的20%左右

问候,
尼古拉斯


Tags: to数据方法函数api过滤器pandasdate
1条回答
网友
1楼 · 发布于 2024-04-28 17:59:38

现在这是可能的:

import pyarrow as pa

my_table = pa.Table.from_arrays(
    [pa.array(['foo', 'bar', 'foo'], pa.string())],
    names=['col1']
)

filtered_table = my_table.filter(pa.compute.equal(my_table['col1'], 'foo'))

相关问题 更多 >