错误含义:
这说明 pandas.read_csv() 读取文件时,第 3 行的列数和前面不一致,比如第一行只有 1 列,但第三行有 2 列,导致解析失败。
解决方法一:指定分隔符 sep
最常见的原因是 文件分隔符不是英文逗号 ,可能是中文逗号、制表符 \t、空格或其他。
示例1:尝试用 sep=‘\t’(制表符分隔的 TSV 文件)
df = pd.read_csv('你的路径.csv', sep='\t', encoding='gbk')
示例2:自动推断分隔符(推荐调试用)
import csv
with open('你的路径.csv', 'r', encoding='gbk') as f:
sniffer = csv.Sniffer()
sample = f.read(1024)
dialect = sniffer.sniff(sample)
print(f"Detected delimiter: {dialect.delimiter}")
然后你再把 sep=‘,’ 改成 sep=‘你检测到的字符’。
解决方法二:指定 error_bad_lines=False(跳过坏行)
如果只是个别行有问题,先跳过再处理:
df = pd.read_csv('你的路径.csv', encoding='gbk', error_bad_lines=False)
注意:error_bad_lines 在新版本 pandas 中已弃用,用 on_bad_lines=‘skip’ 替代:
df = pd.read_csv('你的路径.csv', encoding='gbk', on_bad_lines='skip')
解决方法三:用 Excel 打开另存为标准 CSV
用 Excel 打开这个文件;
选择另存为;
格式选择:CSV UTF-8 (逗号分隔);
然后重新用代码读取。
调试:
先读取前几行看看情况:
with open('你的路径.csv', 'r', encoding='gbk') as f:
for i in range(10):
print(f.readline())
清楚看到问题出在哪一行,格式是什么样的。