在Google Colab中使用Pandas读取数据集时如何解决ParserError
解决Pandas读取CSV时的ParserError问题
问题场景
执行以下代码读取TMDB电影数据集CSV文件时:
movies = pd.read_csv('/content/tmdb_5000_movies.csv', on_bad_lines='skip')
触发解析错误:
ParserError: Error tokenizing data. C error: EOF inside string starting at row 3336
解决方案
1. 切换到Python解析引擎
Pandas默认的C引擎对格式不规范的CSV兼容性较弱,改用Python引擎可处理更多复杂字符串场景,同时保留on_bad_lines='skip'跳过错误行:
movies = pd.read_csv('/content/tmdb_5000_movies.csv', on_bad_lines='skip', engine='python')
2. 配置引号与转义字符
若CSV中存在未正确转义的引号,可通过指定转义字符或引号规则修复解析逻辑:
# 使用反斜杠作为转义字符,同时禁用引号解析 movies = pd.read_csv('/content/tmdb_5000_movies.csv', on_bad_lines='skip', escapechar='\\', quoting=3)
或启用双引号转义:
movies = pd.read_csv('/content/tmdb_5000_movies.csv', on_bad_lines='skip', quotechar='"', doublequote=True)
3. 分块读取并合并
通过分块读取的方式,逐块处理数据并跳过错误行,适合大文件场景:
# 按每1000行分块读取 chunk_iterator = pd.read_csv('/content/tmdb_5000_movies.csv', chunksize=1000, on_bad_lines='skip') # 合并所有块为完整DataFrame movies = pd.concat(chunk_iterator, ignore_index=True)
4. 精准跳过错误行
若已知错误行位置,可直接跳过该行(仅适用于单一错误行场景,注意:skiprows索引从0开始,1-based行号需减1):
movies = pd.read_csv('/content/tmdb_5000_movies.csv', skiprows=[3335], on_bad_lines='skip')
内容的提问来源于stack exchange,提问作者2022CSB110 AVISHIKTA_DAS
相关产品推荐
相关产品推荐

