You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PyArrow在Python中读取满足title='Learn Python'的Parquet文件

在read_pyarrow中添加title筛选条件的方案

嘿,刚好做过类似的POC,给你两种常见场景的实现方法,都是利用谓词下推来高效筛选,不用全量加载数据:

场景1:用pandas + pyarrow引擎读取

如果你的代码是基于pandas的read_parquet并指定engine='pyarrow',直接用filters参数就能搞定,参数格式是[(列名, 操作符, 目标值)]:

import pandas as pd

# 读取时直接筛选title='Learn Python'的数据
filtered_df = pd.read_parquet(
    "你的_parquet文件路径.parquet",
    engine="pyarrow",
    filters=[("title", "=", "Learn Python")]
)

这个filters参数会让pyarrow在读取阶段就过滤掉不符合条件的数据块,比先全读再用df[df['title'] == 'Learn Python']高效太多,尤其是大文件场景。

场景2:直接用pyarrow原生API读取

如果你的POC是直接用pyarrow的read_table方法(很多时候测试原生性能会这么做),需要用pyarrow的计算表达式来构建筛选条件,传递给filter参数(注意这里是单数):

import pyarrow.parquet as pq
import pyarrow.compute as pc

# 构建筛选表达式:匹配title等于'Learn Python'的行
filter_condition = pc.equal(pc.field("title"), "Learn Python")

# 读取符合条件的数据表
filtered_table = pq.read_table(
    "你的_parquet文件路径.parquet",
    filter=filter_condition
)

# 转成DataFrame(如果需要的话)
filtered_df = filtered_table.to_pandas()

小提示

  • 确保你的pyarrow版本不低于0.17.0,老版本对筛选参数的支持不全。
  • Parquet文件默认会生成列统计信息,这是谓词下推高效运行的前提,如果你的文件是自己生成的,一般不用额外配置。

内容的提问来源于stack exchange,提问作者SSingh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:13:57