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

如何用循环高效将DataFrame中多个分类特征转为哑变量?

高效生成分类特征哑变量的方法

方法1:批量处理分类特征(推荐)

直接针对所有需要转换的分类特征列调用一次pd.get_dummies,无需循环,代码最简洁高效,还能避免重复劳动。

步骤:

  • 先把所有要处理的分类特征列名整理成列表
  • 用pd.get_dummies批量生成哑变量,指定drop_first=True(逻辑回归必须加,避免多重共线性)
  • 可选:把生成的哑变量合并回原数据集,或者单独保留

示例代码:

import pandas as pd

# 把所有需要转哑变量的特征列名放这里
categorical_features = ['Sex', 'Embarked', 'Identity', 'Religion', ...]  # 补充你的其他特征

# 批量生成所有哑变量
all_dummies = pd.get_dummies(train[categorical_features], drop_first=True)

# 要是想把哑变量合并到原数据集里
train_with_dummies = pd.concat([train, all_dummies], axis=1)

# 单独取某一个特征的哑变量也很方便
sex_dummies = all_dummies.filter(regex='Sex_')
embark_dummies = all_dummies.filter(regex='Embarked_')

方法2:循环处理并存储到字典

如果确实需要把每个特征的哑变量单独存成可调用的“变量”,用字典存储比逐个定义变量更整洁,不会让你的代码里堆满类似sex/embark这种零散变量。

示例代码:

import pandas as pd

categorical_features = ['Sex', 'Embarked', 'Identity', 'Religion', ...]

# 用字典存每个特征的哑变量
dummy_store = {}

for feat in categorical_features:
    dummy_store[feat] = pd.get_dummies(train[feat], drop_first=True)

# 调用的时候直接按键取
sex = dummy_store['Sex']
embark = dummy_store['Embarked']

补充提醒

逻辑回归里drop_first=True一定要加,它会删掉每个分类特征的第一个类别,避免“哑变量陷阱”导致的多重共线性问题,这会影响模型的稳定性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:01:07