使用Pandas+PyArrow引擎读取大CSV单列时出现解析错误
解决PyArrow引擎读取CSV时列数不匹配的问题
可行解决方案:
启用PyArrow的容错解析选项
通过配置parse_options让PyArrow允许列数不一致的行,和默认引擎行为对齐:import pandas as pd from pyarrow import csv parse_options = csv.ParseOptions(allow_missing_columns=True) test_df = pd.read_csv("test.csv", usecols=["id_str"], engine="pyarrow", parse_options=parse_options)核心是
allow_missing_columns=True,它会忽略行中列数与表头不匹配的情况,自动补全缺失值为NaN。直接用PyArrow API读取指定列
绕开Pandas的封装,直接调用PyArrow的CSV读取接口,更高效处理大文件:import pyarrow.csv as pv # 仅读取目标列,同时开启容错 table = pv.read_csv("test.csv", columns=["id_str"], parse_options=pv.ParseOptions(allow_missing_columns=True)) test_df = table.to_pandas()用默认引擎但优化内存占用
如果PyArrow的方案仍有问题,可切换回默认引擎,通过指定数据类型减少内存消耗:import pandas as pd test_df = pd.read_csv("test.csv", usecols=["id_str"], dtype={"id_str": "string"}, low_memory=False)low_memory=False避免分块读取时的类型推断冲突,dtype指定为string能大幅降低内存占用,适合超大型文件。
问题原因:
PyArrow的CSV解析器默认对格式一致性要求更严格,当CSV中存在空单元格被省略导致行列数与表头不一致时,会直接抛出错误;而Pandas默认的引擎会自动填充NaN来兼容这种不规范的CSV格式。
内容的提问来源于stack exchange,提问作者cicciodevoto
相关产品推荐
相关产品推荐

