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

如何在Pandas中选取含NaN单元格数量最少的列?

选取DataFrame中NaN值最少的列

核心思路

  1. 统计每列的NaN单元格总数
  2. 定位NaN数量最少的列(支持单/多列场景)
  3. 提取目标列

具体实现代码

先通过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 23:27:02