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

pandas如何仅对所有值均为null的列执行fillna填充操作

pandas仅填充全空列的实现方法

正确实现逻辑

  • 首先用df.isnull().all()按列判断每一列是否所有值都为NaN,返回布尔值序列,值为True的列就是要填充的目标列
  • 对筛选出的目标列统一赋值为100即可

完整可运行代码

import pandas as pd
import numpy as np

# 构造示例数据
df = pd.DataFrame(data = {"col1":[3, np.nan, np.nan, 21, np.nan],
                          "col2":[4, np.nan, 12, np.nan, np.nan],
                          "col3":[33, np.nan, 55, np.nan, np.nan],
                          "col4":[np.nan, np.nan, np.nan, np.nan, np.nan]})

# 筛选全为空值的列
full_null_cols = df.columns[df.isnull().all()]
# 给全空列赋值100
df[full_null_cols] = 100

# 也可以用一行代码实现上述两步操作
# df.loc[:, df.isnull().all()] = 100

print(df)

运行输出

col1  col2  col3  col4
0   3.0   4.0  33.0   100
1   NaN   NaN   NaN   100
2   NaN  12.0  55.0   100
3  21.0   NaN   NaN   100
4   NaN   NaN   NaN   100

原代码错误原因

你之前的代码核心问题是判断维度和逻辑不符合需求:df.isnull().all(axis=1)是按行判断整行是否全为空值,和你要筛选全空列的需求完全不符,同时where方法的替换逻辑也和预期相反,所以无法得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:36:02