如何统计Pandas DataFrame多列相同位置共同缺失(NaN)的总数量
解决方案
你可以将待统计的列名整理为一个列表,直接通过Pandas内置的逐行聚合方法实现需求,无需手动循环拼接逻辑运算符:
# 先定义需要统计的目标列列表,可根据实际需求动态修改 target_cols = ['HomeRemote', 'CompanySize'] # 可替换为任意长度的列名列表 # 统计所有目标列全为缺失值的行数 all_null_count = df[target_cols].isnull().all(axis=1).sum()
代码逻辑说明
df[target_cols]:筛选出所有需要参与判断的目标列.isnull():将选中的所有值转换为布尔矩阵,缺失值对应True,非缺失值对应False.all(axis=1):按行做聚合判断,只有当前行所有列的布尔值都为True(即所有目标列全为缺失值)时,才返回True.sum():统计返回的布尔序列中True的总数量,即为符合要求的总行数
如果你希望沿用之前批量拼接逻辑与的思路,也可以通过reduce方法实现:
from functools import reduce import operator target_cols = ['HomeRemote', 'CompanySize'] all_null_count = reduce(operator.and_, (df[col].isnull() for col in target_cols)).sum()
两种方法效果完全一致,第一种写法更简洁易读,对于5万行20列的规模性能没有任何问题。
内容的提问来源于stack exchange,提问作者Krzysztof Sobota
相关产品推荐
相关产品推荐

