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

如何自动删除Pandas DataFrame中离散值过少的列?

优雅删除唯一值过少的离散列

嘿,这个需求我经常碰到!你原来的循环写法虽然能实现功能,但确实不够简洁高效。用Pandas的内置方法可以一行搞定,代码更优雅还能提升性能。

核心实现思路

利用Pandas的nunique()方法快速计算每列的唯一值数量,然后通过布尔索引直接筛选出符合条件的列(唯一值数量≥100),一步完成列的保留/删除。

优雅的代码实现

# 一行代码完成筛选:保留唯一值数量≥100的列
X = X.loc[:, X.nunique() >= 100]

额外细节补充

  • 性能优势:Pandas的内置方法是基于向量化操作实现的,比手动循环效率高得多,尤其是当数据集很大的时候,差距会非常明显。
  • 处理缺失值:默认情况下nunique()会忽略NaN值,如果需要把NaN也当作一个独立的取值统计,可以加上dropna=False参数:
    # 包含NaN在内统计唯一值数量
    X = X.loc[:, X.nunique(dropna=False) >= 100]
    
  • 可读性:这种写法逻辑直观,一眼就能看出来是在筛选唯一值达标的列,比循环代码更容易维护。

内容的提问来源于stack exchange,提问作者Wehl Berker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:19:44