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

使用pandas读取CSV文件遇ParserError,求解决方法

解决pd.read_csv的ParserError字段数不匹配问题

你遇到的ParserError核心原因不是空白行,而是第54行的内容格式异常——该行被解析出2个字段,但文件其他行均为1个字段,导致pandas无法统一解析结构。以下是具体解决方案:

方案1:定位并修复错误行

先手动检查第54行的内容,确认是否误输入了分隔符(比如逗号、制表符)导致字段拆分异常:

with open('datawisata.csv', 'r', encoding='utf-8') as f:
    lines = f.readlines()
print(lines[53])  # Python列表是0索引,第54行对应索引53

修正该行格式后,再用原代码读取即可。

方案2:让pandas容忍字段不匹配的行

如果不需要保留错误行,可使用on_bad_lines参数(pandas 1.3.0及以上版本支持)跳过或警告错误行:

  • 直接跳过错误行:
df = pd.read_csv('datawisata.csv', skip_blank_lines=False, on_bad_lines='skip')
  • 仅警告不中断解析:
df = pd.read_csv('datawisata.csv', skip_blank_lines=False, on_bad_lines='warn')

方案3:强制按最大字段数解析所有行

如果需要保留错误行的内容,可先计算文件中最大字段数,再统一列结构:

# 先统计最大字段数(假设分隔符为逗号,根据实际修改)
max_cols = 0
with open('datawisata.csv', 'r', encoding='utf-8') as f:
    for line in f:
        current_cols = len(line.strip().split(','))
        if current_cols > max_cols:
            max_cols = current_cols

# 按最大字段数读取文件
df = pd.read_csv('datawisata.csv', skip_blank_lines=False, names=[f'col{i+1}' for i in range(max_cols)])

关于空白数据替换的问题

不需要提前将空白替换为“blank”。skip_blank_lines=False会保留空白行,pandas默认将空白行的字段值设为NaN,若需要统一替换为“blank”,可在读取后执行:

df.fillna('blank', inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 22:00:23