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

使用PyArrow过滤读取Parquet数据集时触发ValueError异常

问题解决:PyArrow ParquetDataset过滤器格式错误修正

你的代码存在三个关键问题,导致了ValueError: not enough values to unpack (expected 3, got 1)错误:

  1. 参数传递语法错误:你用括号包裹了关键字参数(比如(use_legacy_dataset = False)),这不符合Python函数传参规则,应直接传递关键字参数,无需额外括号。
  2. Filters格式错误:PyArrow的filters参数要求用嵌套列表表示逻辑关系,而非元组嵌套。原查询逻辑是(A OR B) AND (C OR D),对应filters的格式为:外层列表的元素是AND连接的组,每个组用子列表包裹OR条件。
  3. 拼写错误:parquit_file应修正为parquet_file(拼写遗漏了一个'e')。

修正后的代码

import pyarrow.parquet as pq

# 修正文件名拼写
dataset = pq.ParquetDataset(
    parquet_file,
    use_legacy_dataset=False,
    filters=[
        # 第一组:salary == 150280.17 OR country == "Finland"(OR条件放在同一个子列表)
        [("salary", "==", 150280.17), ("country", "==", "Finland")],
        # 第二组:first_name == "Amanda" OR last_name == "Gray"(与第一组是AND关系)
        [("first_name", "==", "Amanda"), ("last_name", "==", "Gray")]
    ]
)
df = dataset.read().to_pandas()

PyArrow Filters格式规则说明

  • AND关系:外层列表中的每个元素(单个三元组或子列表)彼此为AND连接。
  • OR关系:将多个OR条件放在同一个子列表中,子列表内的三元组彼此为OR连接。
  • 单个条件:直接使用[(列名, 操作符, 值)]的格式即可。

内容的提问来源于stack exchange,提问作者Subrat Kumar Sahoo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:03:50