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

使用pandas fillna填充缺失值遇类型不兼容警告,求原因及解决方法

问题解析与解决方法

警告原因

  1. 类型不兼容:你要填充的"0%"是字符串类型,但目标数据列的 dtype 是float64(数值类型)。pandas 禁止直接给数值列填充字符串值,当前版本仅发出警告,未来会直接报错。
  2. 变量赋值错误:代码里用了inplace=True,这个参数会直接修改原DataFrame,此时fill_data会被赋值为None,完全不符合你获取填充后数据的需求。

解决方法

根据你的需求分两种场景处理:

场景1:需要存储带百分比符号的文本

先把目标列转为字符串类型,再填充缺失值:

# 方式1:修改原DataFrame
df['目标列名'] = df['目标列名'].astype(str)
df['目标列名'].fillna("0%", inplace=True)

# 方式2:生成新的DataFrame,不修改原数据
fill_data = df.astype(str).fillna("0%")

场景2:保留数值类型,仅显示为百分比

如果你的数据是比例数值(比如0.1代表10%),应该填充数值0,后续再格式化显示为百分比:

# 填充数值0,生成新的DataFrame
fill_data = df.fillna(0)
# 格式化显示为百分比(不改变原数据的数值类型)
fill_data['目标列名'] = fill_data['目标列名'].apply(lambda x: f"{x*100}%")

额外注意

如果一定要用inplace=True,不要给变量赋值,因为它返回None:

df.fillna("0%", inplace=True)  # 直接修改原df即可

内容的提问来源于stack exchange,提问作者Obiukwu Uchechi Patience

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 08:43:18