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

Pandas如何获取所有值均为0或NaN的列的列名

实现代码

你可以基于「判断每列所有元素均为0或NaN」的逻辑实现筛选,参考代码如下:

# 直接获取符合条件的列名
target_cols = df.columns[(df.isna() | (df == 0)).all(axis=0)]
# 如需获取对应列的DataFrame子集
df_filtered = df.loc[:, (df.isna() | (df == 0)).all(axis=0)]

运行上述代码后target_cols的输出为:

Index(['b', 'c', 'd'], dtype='object')

逻辑说明

  • df.isna()会逐元素判断是否为NaN,返回布尔值矩阵
  • df == 0会逐元素判断是否为0,返回布尔值矩阵
  • 两个矩阵用|按位或运算后,只要元素是0或NaN就会返回True
  • 调用.all(axis=0)对每列做聚合判断,只有整列所有元素都为True时,该列才会被标记为符合条件
  • 最后用得到的布尔索引筛选列名即可

原有代码问题说明

你之前使用的~(df != 0).any(axis=0)逻辑等价于「列内所有元素都等于0」,而NaN和0做不等于比较时会返回True,因此全为NaN的c列会被过滤掉,不符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:00:02