pandas 1.1.5调用to_csv报错:无法从pandas.core.dtypes.generic导入ABCIndexClass
报错解决方法
根因说明
这个报错是依赖包版本不匹配导致的:ABCIndexClass是pandas 1.3版本之前的类名,pandas 1.3及之后版本将该类重命名为了ABCIndex,如果和pandas交互的第三方包适配的版本,和你本地安装的pandas版本不一致,就会触发该导入错误。
优先解决方案(无需修改源码,稳定性最高)
- 首先核对运行环境的pandas实际路径,执行代码:
import pandas; print(pandas.__file__)
确认输出的路径和报错提示的C:\Users\userName\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\dtypes\generic.py路径一致,排除多conda/python环境混用的问题。 - 若路径一致,可选择以下任意一种适配方案:
- 保留pandas 1.1.5版本:将触发导入报错的第三方包(通常是导出、数据处理类的关联包)降级到适配pandas 1.1.5的版本即可。
- 升级pandas版本:直接将pandas升级到1.3及以上版本,执行命令:
pip install pandas>=1.3 -U
升级完成后,修改报错指向的导入语句,将ABCIndexClass替换为ABCIndex即可。 - 若确认路径一致还是报错,大概率是pandas安装包损坏,执行重装命令即可:
pip uninstall pandas -y && pip install pandas==1.1.5
临时兼容方案(修改源码,适合快速调试)
如果不想调整依赖版本,可以直接添加别名兼容:
- 如果你使用的是pandas 1.3及以上版本,找不到
ABCIndexClass:打开报错提示的pandas/core/dtypes/generic.py文件,在末尾添加一行代码即可:
ABCIndexClass = ABCIndex
- 如果你使用pandas 1.1.5,且已确认generic.py中存在
ABCIndexClass定义:清除当前环境的pyc缓存,重启运行代码的IDE/终端即可解决。
内容的提问来源于stack exchange,提问作者user3471438
相关产品推荐
相关产品推荐

