如何在Pandas中选取含NaN单元格数量最少的列?
选取DataFrame中NaN值最少的列
核心思路
- 统计每列的NaN单元格总数
- 定位NaN数量最少的列(支持单/多列场景)
- 提取目标列
具体实现代码
先通过isna().sum()统计每列的NaN数量:
import pandas as pd import numpy as np # 示例DataFrame df = pd.DataFrame({ 'col1': [1, np.nan, 3, np.nan, 5], 'col2': [np.nan, np.nan, np.nan, 4, 5], 'col3': [1, 2, 3, 4, 5], 'col4': [np.nan, 2, np.nan, 4, np.nan] }) # 统计每列的NaN数量 nan_counts = df.isna().sum()
场景1:仅提取单个NaN最少的列
# 获取NaN数量最少的列名 min_nan_col = nan_counts.idxmin() # 提取该列 target_col = df[min_nan_col]
场景2:提取所有NaN数量相同且为最小值的列
如果存在多列NaN数量并列最少,用布尔索引筛选:
# 获取NaN数量的最小值 min_nan_value = nan_counts.min() # 筛选所有符合条件的列名 min_nan_cols = nan_counts[nan_counts == min_nan_value].index # 提取这些列 target_cols = df[min_nan_cols]
关键方法解释
df.isna():生成布尔型DataFrame,标记每个单元格是否为NaN.sum():按列求和,得到每列的NaN总数idxmin():返回Series中最小值对应的索引(即目标列名)min():获取NaN数量的最小值,用于批量筛选符合条件的列
内容的提问来源于stack exchange,提问作者Florent
相关产品推荐
相关产品推荐

