Python3.9环境下调用pandas series.mean()报NoneType object is not callable错误
问题原因
- 核心触发点是pandas底层依赖的高性能计算库
bottleneck适配异常。pandas的nanops模块中负责均值计算的bn_func是直接映射bottleneck库的对应函数,当Python3.9环境下安装的bottleneck版本与当前pandas版本不兼容、或bottleneck安装损坏时,bn_func会被初始化为None,调用时就会抛出TypeError: 'NoneType' object is not callable错误。 - 次要原因可能是pandas版本与Python3.9不兼容,低于1.2.0版本的pandas未完成对Python3.9的全功能适配,部分底层函数绑定逻辑存在缺陷也会触发该报错。
解决方案
- 方案1:重装兼容版本依赖
直接卸载当前环境中不兼容的pandas和bottleneck,安装适配Python3.9的版本组合即可,执行命令:pip uninstall -y pandas bottleneck && pip install pandas>=1.3.0 bottleneck>=1.3.2 - 方案2:禁用bottleneck加速
不需要调整依赖版本,在代码导入pandas后添加一行配置,关闭pandas对bottleneck的调用即可:
后续pandas会调用自带的原生计算逻辑完成均值运算,不会触发该报错。import pandas as pd pd.set_option('compute.use_bottleneck', False) - 方案3:替换为numpy计算逻辑
临时验证场景下可以直接用numpy的均值方法绕开pandas的底层调用逻辑,修改代码写法:import numpy as np # 替换原来的data["temp"].mean()写法 print(np.mean(data["temp"]))
内容的提问来源于stack exchange,提问作者Boaz Lowenstein
相关产品推荐
相关产品推荐

