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

Pandas中fillna如何自动选最优方法,用列内非空值替换所有NaN

解决方案

方法1:组合填充(最简单通用)

因为每列的非空值完全一致,先后执行向后填充bfill()和向前填充ffill()即可覆盖所有空值,非空值在列的任意位置都生效:

# 两种执行顺序都可以得到目标结果
df = df.bfill().ffill()
# 或 df = df.ffill().bfill()

方法2:指定列非空值填充(逻辑严谨,兼容全类型)

如果要严格用每列的第一个非空值覆盖整列,适配数值、字符串等任意数据类型,还可以用apply实现:

df = df.apply(lambda col: col.fillna(col.dropna().iloc[0]))

如果存在某列全为空的场景,可以加判断避免报错:

df = df.apply(lambda col: col.fillna(col.dropna().iloc[0]) if col.notna().any() else col)

方法3:数值列快捷写法

仅适用于所有列都是数值类型的场景,因为非空值全部相同,直接用列的均值、最大值、最小值都可以直接填充:

df = df.fillna(df.mean())
# 或 df = df.fillna(df.max())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:24:03