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

如何在PyArrow read_csv中跳过列数不匹配的错误行?

PyArrow读取CSV跳过列数不匹配行的解决方案

直接配置错误行处理逻辑

PyArrow支持通过解析选项自定义处理解析失败的行,实现和Pandas on_bad_lines='skip' 一致的效果:

from pyarrow import csv

def skip_invalid_rows(row_num, row_content, error):
    # 可选:打印错误行信息用于排查
    print(f"跳过异常行 {row_num}: {error}")
    return None  # 返回None表示直接跳过该行

# 配置解析选项
parse_opts = csv.ParseOptions(invalid_row_handler=skip_invalid_rows)
# 读取CSV文件,自动跳过不符合列数要求的行
test_arrow = csv.read_csv(test_file, parse_options=parse_opts)

用Scanner实现更灵活的读取控制

如果需要对读取过程做更多定制(比如字段过滤、类型转换),可以使用CSV Scanner:

from pyarrow import csv

def skip_invalid_rows(row_num, row_content, error):
    return None

# 创建扫描器并配置错误处理逻辑
scanner = csv.Scanner.from_path(
    test_file,
    parse_options=csv.ParseOptions(invalid_row_handler=skip_invalid_rows)
)
# 执行扫描并转换为Arrow Table
test_arrow = scanner.scan().to_table()

关键说明

  • invalid_row_handler的返回值决定行的处理方式:返回None则跳过当前行;返回修改后的行字符串,会尝试重新解析修改后的内容。
  • 该逻辑不仅能处理列数不匹配的错误,还能兼容其他CSV解析异常(如格式错误、类型不匹配等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 04:36:01