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

使用pandas fillna填充空值后仍存在空值的问题

解决pandas fillna后仍存在空值的问题

嘿,我之前也遇到过一模一样的情况,折腾了好一会儿才找到原因,给你梳理下可能的问题和解决办法:

1. 别踩「inplace=True + 赋值」的坑

你提到尝试过df["A"] = df["A"].fillna("Global", inplace=True)这种写法,这其实是个典型错误!当你给fillna加上inplace=True时,这个方法会直接修改原DataFrame,返回值是None。所以你这么写相当于把None赋值给了df["A"],反而会产生更多空值!

正确的写法二选一就行:

  • 只用inplace=True,不赋值:
    df["A"].fillna("Global", inplace=True)
    
  • 赋值但不用inplace:
    df["A"] = df["A"].fillna("Global")
    

2. 你的「空值」可能不是pandas识别的标准空值

如果上面的写法你已经试过了,但还是有非零空值,那大概率是数据里的“空值”不是pandas默认认的np.nan或pd.NA,而是字符串类型的空值(比如"")、空格(" ")或者其他自定义占位符(比如"N/A")。

排查方法:

先看看这些列的唯一值,确认是不是有假空值:

# 查看A-D列的所有唯一值
for col in ["A", "B", "C", "D"]:
    print(f"列{col}的唯一值:{df[col].unique()}")

解决办法:

先把这些假空值转换成标准的np.nan,再用fillna填充:

import numpy as np

# 1. 把所有假空值替换成NaN(根据你实际的假空值类型调整列表内容)
replace_values = ["", " ", "N/A", "NULL"]
df[["A", "B", "C", "D"]] = df[["A", "B", "C", "D"]].replace(replace_values, np.nan)

# 2. 批量填充空值
df[["A", "B", "C", "D"]] = df[["A", "B", "C", "D"]].fillna("Global")

3. 最后验证

填充完之后再用df.isnull().sum()检查,应该就能看到A-D列的空值数变成0了~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:14:37