使用pandas.read_csv读取含冒号时间列的CSV报错求助
解决pandas读取含冒号时间列的分号分隔CSV报错问题
问题重现
CSV以分号;为分隔符,行结构示例:
01/09/22;00:00;1829664;884435280;30256;7618031;827711;9559232
执行代码:
df = pd.read_csv('\MyCSV.csv', sep=';')
报错:Error tokenizing data. C error: Expected 4 fields in line 3, saw 18
删除含冒号:的时间列后可正常读取,确认问题源于该列。
可行解决办法
改用Python解析引擎
pandas默认的C引擎对部分特殊字符场景处理不够灵活,切换到Python引擎可规避这类tokenizing错误:df = pd.read_csv('\MyCSV.csv', sep=';', engine='python')明确指定列数/列名
提前定义匹配字段数量的列名,让pandas跳过自动推断字段数的步骤:# 自定义8个列名,对应示例行的字段数量 col_names = ['date', 'time', 'col3', 'col4', 'col5', 'col6', 'col7', 'col8'] df = pd.read_csv('\MyCSV.csv', sep=';', names=col_names, header=None)若CSV自带表头,移除
header=None参数即可。跳过/处理异常行
若报错行的时间列存在格式错误(如意外混入分号),可设置跳过错误行(仅允许丢失部分数据时使用):df = pd.read_csv('\MyCSV.csv', sep=';', on_bad_lines='skip')
内容的提问来源于stack exchange,提问作者Ignpl
相关产品推荐
相关产品推荐

