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

如何获取pandas get_dummies生成的哑变量列名?

如何便捷获取pandas get_dummies生成的哑变量列名

当使用pandas.get_dummies()处理DataFrame的分类列后,若想快速获取生成的哑变量列名,可采用以下几种简洁高效的实现方式,替代原有的繁琐循环写法:

方法一:提前生成列名(无需遍历生成后的DataFrame)

这种方式直接基于原分类列的唯一值生成预期的哑变量列名,不需要处理生成后的DataFrame列,效率更高:

import pandas as pd

# 构建示例DataFrame
df = pd.DataFrame({
    "numeric_1": [1, 2, 3, 4],
    "cat_1": ['high', 'low', 'high', 'low'],
    "cat_2": ['blue', 'blue', 'green', 'green']
})

categorical_colnames = ['cat_1', 'cat_2']

# 提前生成哑变量列名
dummy_cols = []
for col in categorical_colnames:
    # 获取当前分类列的唯一值
    unique_vals = df[col].unique()
    # 拼接列名并添加到列表
    dummy_cols.extend([f"{col}_{val}" for val in unique_vals])

# 生成哑变量
df = pd.get_dummies(df, columns=categorical_colnames)

print(dummy_cols)
# 输出: ['cat_1_high', 'cat_1_low', 'cat_2_blue', 'cat_2_green']

方法二:从生成后的DataFrame中提取列名

如果已经完成哑变量生成,可通过列表推导式简化提取逻辑:

简化版循环写法

# 生成哑变量后直接提取
dummy_cols = [col for col in df.columns if any(col.startswith(f"{cat}_") for cat in categorical_colnames)]

print(dummy_cols)
# 输出: ['cat_1_high', 'cat_1_low', 'cat_2_blue', 'cat_2_green']

更高效的前缀匹配写法

利用str.startswith()支持元组参数的特性,进一步简化代码:

# 构造前缀元组
prefixes = tuple(f"{cat}_" for cat in categorical_colnames)
# 匹配并提取列名
dummy_cols = [col for col in df.columns if col.startswith(prefixes)]

print(dummy_cols)
# 输出: ['cat_1_high', 'cat_1_low', 'cat_2_blue', 'cat_2_green']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:58:37