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

如何删除Pandas DataFrame中二值某类占比极低的列

解决方法

你需要遍历DataFrame的每一列,筛选出同时满足「仅2个唯一取值」、「其中一个取值的出现占比低于0.1%」的列后批量删除即可,以下是可直接运行的实现代码:

简洁版实现

# 定义占比阈值,0.1%对应0.001
threshold = 0.001
# 筛选符合删除条件的列并移除
df = df.drop(columns=[
    col for col in df.columns 
    if df[col].nunique() == 2 
    and df[col].value_counts(normalize=True).min() < threshold
])

代码说明

  • nunique():统计当前列的唯一值数量,先过滤出只有2个不同取值的列
  • value_counts(normalize=True):直接返回每个取值的出现占比,无需手动除以总行数
  • 取占比的最小值和阈值对比,只要最小值低于阈值,就说明该列其中一类的占比不足0.1%,符合删除要求

缺失值兼容版本

如果你的数据存在空值,且需要把空值也算作一个独立取值统计,调整参数即可:

threshold = 0.001
df = df.drop(columns=[
    col for col in df.columns 
    if df[col].nunique(dropna=False) == 2 
    and df[col].value_counts(normalize=True, dropna=False).min() < threshold
])

效果验证

以你给出的col x为例,统计结果为26868个0、2个1,总样本量26870,1的占比约为0.0074%,低于0.1%的阈值,会被判定为符合条件的列自动删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:18:03