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

Python:如何基于条件打印DataFrame中含缺失值的列

如何仅打印DataFrame中包含缺失值的列?

先还原下你的场景:你有这样一个带缺失值的DataFrame,还写了个统计缺失值的函数:

import pandas as pd
import numpy as np

data = pd.DataFrame({'col_A' : [1,2,3,4], 'col_B' : [1,2,np.NaN,4]})

def num_missing(x): return sum(x.isnull())

直接调用print(data.apply(num_missing, axis=0))会输出所有列的缺失值统计,但你只想保留有缺失值的列(也就是统计结果大于0的)。

其实不用纠结复杂的单行if语句,我们可以先拿到所有列的缺失值统计结果,再筛选出结果大于0的部分就行,给你两种简单的实现方式:

方式一:基于你的自定义函数优化

先把统计结果存到变量里(可读性更好),再筛选打印:

missing_counts = data.apply(num_missing, axis=0)
print(missing_counts[missing_counts > 0])

如果非要写成一行,也可以链式调用:

print(data.apply(num_missing, axis=0)[data.apply(num_missing, axis=0) > 0])

方式二:用Pandas内置方法简化代码

其实Pandas本身就有更简洁的统计缺失值的方法,完全可以不用自定义函数:

print(data.isna().sum()[data.isna().sum() > 0])

两种方式的输出都会是你想要的:

col_B    1
dtype: int64

之前你尝试单行if语句出错,大概率是因为把条件判断放在了print语句里,而我们需要先对统计后的Series做筛选,再把筛选后的结果传给print输出~

内容的提问来源于stack exchange,提问作者A.Papa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:01:05