Python DataFrame使用fillna()出现递归错误的技术咨询
解决DataFrame.fillna()递归错误问题
快速修复方案
直接放弃inplace=True,改用重新赋值的方式填充NaN,这是最稳妥的解决办法:
# 仅填充age列的NaN,用该列的均值 data['age'] = data['age'].fillna(data['age'].mean()) # 如果需要填充所有数值列的NaN data = data.fillna(data.mean(numeric_only=True))
为什么会出现递归错误?
inplace=True是在原DataFrame对象上直接做修改操作,当代码处于某些特殊环境(比如自定义了DataFrame子类、Jupyter Notebook的变量引用逻辑)时,容易触发内部递归调用冲突。换成重新赋值的方式,相当于创建一个新的DataFrame对象,彻底避开这个问题。
额外排查点
- 检查变量名冲突:确认你的DataFrame变量名
data没有和pandas的内置方法重名(比如别把变量命名成fillna/mean),这种低级错误也可能引发异常。 - 先验证均值计算:单独计算age列的均值,确认结果正常:
如果这个值没问题,再用它填充NaN就不会出问题。print(data['age'].mean())
内容的提问来源于stack exchange,提问作者956
相关产品推荐
相关产品推荐

