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

MSNoise执行plot dvv时pandas读取CSV报ParserError问题求助

问题根源分析

  • 第一个pandas.errors.ParserError报错的直接原因:你要读取的某一个日期TXT文件的第114行出现格式损坏,大概率是存在多余逗号、两行内容拼接、文件写入异常等问题,导致原本应该匹配表头的8个字段变成了15个,pandas解析失败。
  • 后续加error_bad_lines=False后出现的TypeError报错原因:跳过坏行的过程中,部分行的日期列解析失败,没有被转成Timestamp类型,最终拼接的数据集索引里同时存在Timestamp类型和字符串类型,重采样时无法对两种不同类型的索引做排序比较,触发报错。
    两类数据格式一致但只有一类报错,是因为另一类数据的所有TXT文件都没有出现这种单行损坏的情况,此前能正常运行说明对应文件是近期才被意外修改/存储时出现了IO错误(比如磁盘写入中断、坏块等)。

排查与解决步骤

方案1:修复源文件(最推荐,无遗留问题)

  1. 按照代码中的文件路径规则定位问题文件:DTT/[filterid编号]/[mov_stack数值]_DAYS/[分量名]/[报错对应日期].txt
  2. 打开该文件找到第114行,修正格式使其和其他正常行保持8个字段的结构,不重要的异常行可以直接删除;如果有原始备份直接替换该损坏文件即可。
  3. 移除pd.read_csv中添加的error_bad_lines=False参数,重新运行即可。

方案2:修改代码兼容异常文件

如果无法修复源文件,可以调整读取逻辑避免报错,适配你使用的Python2.7+旧版pandas环境的代码示例:

df = pd.read_csv(
    day,
    header=0,
    index_col=0,
    parse_dates=True,
    error_bad_lines=False,
    warn_bad_lines=False,
    usecols=range(8) # 强制只读取前8个字段,忽略多余的异常字段
)
# 强制统一索引为datetime类型,删除解析失败的无效行
df.index = pd.to_datetime(df.index, errors='coerce')
df = df[df.index.notnull()]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:15:03