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

Pandas筛选唯一值数大于2的分类列并生成列名列表

Pandas 筛选唯一值数大于2的分类列实现方案

核心逻辑

  • 第一步:从DataFrame中筛选出所有分类列,包含显式声明为category类型的列、以及存储分类值的object(字符串)类型列,自动排除数值、日期类型列
  • 第二步:对筛选出的分类列逐列统计唯一值数量,保留唯一值个数大于2的列名,整理为目标列表

实现代码

# 筛选所有分类类型列
cat_columns = df.select_dtypes(include=['object', 'category']).columns

# 统计唯一值并过滤,生成目标列表
mylist = cat_columns[df[cat_columns].nunique() > 2].tolist()

示例验证

用提供的样例数据构造测试DF:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'date_time1': pd.to_datetime(['2020-10-08 19:09:21.884']*5),
    'date_time2': pd.to_datetime(['2021-11-08 15:18:26.864']*5),
    'cat_col1': ['ABC', 'BCD', 'ABC', 'CDE', 'BCD'],
    'cat_col_2': ['xyz', 'xyz', 'yza', 'xyz', 'xyz'],
    'num_col1': [20, 30, 40, 10, 20],
    'num_col2': [40, 50, 30, 80, 70],
    'cat_col3': ['PQR', 'ABC', 'MNO', 'CDE', 'MNO']
})

运行上述核心代码后,得到的mylist输出为['cat_col1', 'cat_col3'],和预期结果完全匹配。

补充说明

如果分类列中存在空值,且需要将空值算作一个独立的唯一值参与统计,可以给nunique()传入dropna=False参数,代码修改为:

mylist = cat_columns[df[cat_columns].nunique(dropna=False) > 2].tolist()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:18:24