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
相关产品推荐
相关产品推荐

