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

如何在Python Pandas中仅对占比≥40%的类别执行dummy coding

仅对占比≥40%的类别执行虚拟编码

问题描述

现有如下结构的DataFrame:

COL1 | COL2 | COL3 | ...  | COLn
-----|------|------|------|----
111  | A    | Y    | ...  | ...
222  | A    | Y    | ...  | ...
333  | B    | Z    | ...  | ...
444  | C    | Z    | ...  | ...
555  | D    | P    | ...  | ...

需要仅针对每个类别变量中占比≥40%的类别,使用pandas.get_dummies()生成虚拟编码。以示例数据为例:

  • COL2中只有"A"类别的占比达到40%(2/5)
  • COL3中"Y"和"Z"的占比均为40%,符合要求

期望得到的输出结构如下:

COL1   | COL2_A  | COL3_Y  | COL3_Z | ...  | COLn
-------|---------|---------|--------|------|-------
111    | 1       | 1       | 0      | ...  | ...
222    | 1       | 1       | 0      | ...  | ...
333    | 0       | 0       | 1      | ...  | ...
444    | 0       | 0       | 1      | ...  | ...
555    | 0       | 0       | 0      | ...  | ...

可复现代码

import pandas as pd

df = pd.DataFrame()
df["COL1"] = [111,222,333,444,555]
df["COL2"] = ["A", "A", "B", "C", "D"]
df["COL3"] = ["Y", "Y", "Z", "Z", "P"]

实现方案

可以通过以下步骤实现需求:

  1. 遍历目标类别列,筛选出占比≥40%的类别
  2. 仅对这些类别生成虚拟编码
  3. 合并原始非类别列与虚拟编码列

完整代码:

# 指定需要处理的类别列
categorical_columns = ["COL2", "COL3"]

# 筛选每个列中符合占比要求的类别
qualified_categories = {}
for col in categorical_columns:
    # 计算类别占比
    category_ratios = df[col].value_counts(normalize=True)
    # 保留占比≥0.4的类别
    qualified_categories[col] = category_ratios[category_ratios >= 0.4].index.tolist()

# 生成目标虚拟编码列
dummy_dfs = []
for col, cats in qualified_categories.items():
    # 生成虚拟变量
    temp_dummy = pd.get_dummies(df[col], prefix=col)
    # 仅保留符合条件的类别对应的列
    temp_dummy = temp_dummy[[f"{col}_{cat}" for cat in cats]]
    dummy_dfs.append(temp_dummy)

# 合并结果:保留原始非类别列 + 虚拟编码列
final_df = pd.concat([df.drop(categorical_columns, axis=1)] + dummy_dfs, axis=1)

print(final_df)

运行代码后输出:

COL1  COL2_A  COL3_Y  COL3_Z
0   111       1       1       0
1   222       1       1       0
2   333       0       0       1
3   444       0       0       1
4   555       0       0       0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:50:29