You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么pandas的fillna()的inplace参数对多列操作不生效?

这是pandas的正常行为,并非代码语法出错。

问题原因

1. 填充操作不生效的原因

你通过data.loc[:, var_categor]取数时,pandas返回的是原数据集的临时副本,而非直接关联原数据的视图。inplace=True仅会修改这个临时副本,而该副本在当前行代码执行完成后就会被回收,原数据集完全没有被改动,因此后续统计缺失值时数量没有变化。

2. 无警告提示的原因

pandas的SettingWithCopyWarning(修改副本警告)的触发逻辑非常保守,只有当引擎明确判定你正在修改一个和原数据脱离关联的副本时,才会抛出警告。使用.loc进行多列切片后直接调用方法的操作,属于pandas当前判定逻辑的模糊区间,引擎无法100%确认你操作的是副本,因此不会触发任何警告或报错。


正确的实现方案

方案1:放弃inplace参数,直接将填充后的结果赋值回原数据集的对应列

data.loc[:, var_categor] = data.loc[:, var_categor].fillna("Missing")

方案2:直接对原数据集调用fillna,通过subset参数指定要填充的列

data.fillna("Missing", subset=var_categor, inplace=True)

内容的提问来源于stack exchange,提问作者KZiovas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:24:03