Jupyter Notebook使用pandas读取csv文件报ParserError错误如何解决
错误原因
ParserError: Expected 5 fields in line 16, saw 6 触发的根本原因是:pandas根据CSV前几行/表头推断每行有5个字段,但第16行实际被分隔符拆分出了6个字段,通常是字段内容包含默认分隔符(逗号)、字段引用符不匹配、行内容格式异常导致。
解决方案
- 方案1:临时跳过异常行(快速调试用,会丢失异常行数据)
pandas 1.4及以上版本使用如下代码:
df = pd.read_csv("C:/Users/Jens/Projektarbeit - Ticket Intelligence/train_mail.csv", on_bad_lines='skip')
pandas 1.3及更早版本使用如下代码:
df = pd.read_csv("C:/Users/Jens/Projektarbeit - Ticket Intelligence/train_mail.csv", error_bad_lines=False, warn_bad_lines=True)
- 方案2:显式指定解析规则适配CSV格式
如果CSV中字段用引号包裹避免内容里的分隔符被误识别,可指定引用符参数:
df = pd.read_csv("C:/Users/Jens/Projektarbeit - Ticket Intelligence/train_mail.csv", quotechar='"')
如果你的CSV实际分隔符不是默认逗号,比如是分号、制表符,可显式指定分隔符:
# 分号分隔的场景 df = pd.read_csv("C:/Users/Jens/Projektarbeit - Ticket Intelligence/train_mail.csv", sep=';') # 制表符分隔的场景 df = pd.read_csv("C:/Users/Jens/Projektarbeit - Ticket Intelligence/train_mail.csv", sep='\t')
方案3:手动修正原始CSV(最优,无数据丢失)
直接打开原始CSV文件定位第16行,检查是否存在多余分隔符、引号未闭合、内容格式错误,修正后重新读取即可。方案4:强制保留固定列数
如果你确认数据只有5列,多出来的内容属于无效冗余,可指定只读取前5列:
# 可将col1-col5替换为你实际的列名 df = pd.read_csv("C:/Users/Jens/Projektarbeit - Ticket Intelligence/train_mail.csv", names=['col1','col2','col3','col4','col5'], usecols=range(5))
内容的提问来源于stack exchange,提问作者Jens
相关产品推荐
相关产品推荐

