使用pd.read_excel指定列报错,添加nrows参数后恢复正常
问题分析与解决
报错原因
- 你的Excel文件尾部(靠近第172034行的位置)大概率存在异常行:比如空行但带有特殊格式、合并单元格残留、或者行内列数和表头行不匹配,导致pandas全量读取时,对列标识的解析出现混乱,错误判定
usecols=["B", "C"]参数不符合要求,抛出该错误。 - 添加
nrows=172033后,读取范围排除了最后一行的异常数据,pandas能正常识别列的位置标识,因此读取成功。
验证与修复方案
- 检查并清理原文件:打开
data/A.xlsx,直接跳转到最后10行左右,查看是否有空白行、格式错乱的单元格或内容异常的行,删除这些行后重新保存文件,再尝试原代码读取。 - 跳过尾部异常行(不修改原文件):使用
skipfooter参数跳过可能存在问题的尾部行,示例代码:
可以根据实际情况调整df = pd.read_excel('data/A.xlsx', usecols=["B", "C"], skipfooter=1)skipfooter的数值,比如先尝试跳过1-5行。 - 用回调函数指定列:改用
usecols的回调函数形式,明确筛选目标列,避免pandas解析列标识时出错:def select_cols(col): return col in ["B", "C"] df = pd.read_excel('data/A.xlsx', usecols=select_cols)
内容的提问来源于stack exchange,提问作者lima
相关产品推荐
相关产品推荐

