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

pandas read_csv读取gzip压缩CSV仅返回6列问题排查

问题原因

最高概率的核心原因是CSV的第6列(valveOpen列)存在包裹整行后续内容的闭合引号:pandas默认将双引号视为字段包裹符,两个引号之间的所有逗号都会被识别为字段内容而非分隔符,因此会把第6列之后的所有内容都归为valveOpen列的值,最终得到仅6列的DataFrame,且行数和实际完全一致,解析过程不会抛出字段不匹配的错误。
其他可能原因:

  • 传入的文件路径错误,实际读取的是另一个仅含6列的同名gzip压缩文件
  • 数据行第6列附近存在#字符,被pandas误识别为注释起始符(该情况通常会伴随字段数不匹配的警告)
  • pandas默认C解析引擎存在兼容问题,长行解析时异常截断
  • 文件使用混合分隔符,前6列为逗号,后续列使用其他不可见分隔符
排查步骤

先跳过pandas,直接读取gzip文件的原始文本确认真实行结构,执行以下代码:

import gzip
with gzip.open(thefile, 'rt', encoding='utf-8') as f:
    # 打印前3行的原始表示,所有不可见字符都会显式展示
    for _ in range(3):
        print(repr(f.readline()))

观察输出:

  • 如果数据行第6个字段前后存在双引号,且右引号出现在行尾,即可确认是引号识别问题
  • 如果第6个逗号附近存在#字符,即可确认是注释符误识别问题
  • 如果原始行本身就只有6个逗号分隔的字段,说明文件路径错误,读错了文件
解决方案
  • 针对引号识别问题:读取时关闭引号特殊解析规则
import csv
processdf = pd.read_csv(
    thefile,
    compression='gzip',
    quoting=csv.QUOTE_NONE, # 不将引号视为字段包裹符
    sep=',' # 显式指定逗号为分隔符
)
  • 针对注释符误识别问题:读取时禁用注释解析
processdf = pd.read_csv(
    thefile,
    compression='gzip',
    comment=None
)
  • 若上述方案仍不生效,追加engine='python'参数,使用兼容性更好的Python解析引擎替代默认C引擎即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:06:23