如何使用Pandas读取表头损坏的CSV文件?报错求助
解决Pandas读取CSV时的ParserError问题
你的报错ParserError: Error tokenizing data. C error: Expected 1 fields in line 3, saw 2和编码无关,核心是CSV数据格式不规范,导致Pandas解析时字段数量不匹配。以下是针对性解决方法:
1. 确认并指定正确的分隔符
欧洲地区的CSV文件常使用分号;而非逗号,作为分隔符,先打开CSV文件查看实际分隔符:
- 如果是分号,修改代码指定分隔符:
# Jupyter环境 path = 'data/DATA_vozila_RAW.csv' df = pd.read_csv(path, sep=';', encoding='Latin-1') # Visual Studio环境 data = pd.read_csv('DATA_vozila_RAW.csv', encoding="Latin-1", delimiter=";") print(data) - 如果是制表符或其他符号,将
sep设为对应值(比如制表符用sep='\t')。
2. 跳过格式错误的行
如果仅个别行存在格式问题,可直接跳过这些行(Pandas 1.4.0+支持):
df = pd.read_csv('data/DATA_vozila_RAW.csv', encoding='Latin-1', on_bad_lines='skip')
旧版本Pandas可使用error_bad_lines=False替代。
3. 处理非标准表头/数据起始行
如果CSV前几行是说明文字而非数据,导致列数不匹配,可跳过这些行:
# 跳过前2行,从第3行开始读取数据,并自定义列名 df = pd.read_csv('data/DATA_vozila_RAW.csv', encoding='Latin-1', skiprows=2, names=['字段1', '字段2'])
4. 使用Python引擎提升兼容性
默认的C引擎对不规范数据兼容性较差,切换到Python引擎尝试:
df = pd.read_csv('data/DATA_vozila_RAW.csv', encoding='Latin-1', engine='python')
内容的提问来源于stack exchange,提问作者maja kralj
相关产品推荐
相关产品推荐

