pandas get_dummies生成哑变量列的自定义命名方法
自定义pd.get_dummies生成的SEX分类哑变量列名实现方案
针对你需要生成目标列名SEX_MALE、SEX_FEMALE的需求,可通过以下几种方式实现:
- 适配现有代码的最小改动方案
你当前编写的rename逻辑本身可正常运行,如果SEX列的原始取值就是MALE、FEMALE,现有代码生成的列名完全匹配预期,无需额外调整。如果原始取值是编码形式(比如1/0),只需要将rename的lambda映射替换为字典映射,明确原始值到目标列名的对应关系即可,示例代码:
# 适配原始SEX取值为1=男、0=女的场景 dummy_variable = pd.get_dummies(df['SEX']).rename(columns={ 1: 'SEX_MALE', 0: 'SEX_FEMALE' })
- 利用get_dummies内置参数的高效实现
pd.get_dummies本身支持通过prefix、prefix_sep两个参数直接定制生成列的命名规则,不需要额外执行重命名操作。只要将prefix设为SEX、prefix_sep设为_,生成列的命名规则即为「前缀_原始分类值」,当原始SEX列的分类值为MALE、FEMALE时,可直接得到目标列名,示例代码:
dummy_variable = pd.get_dummies( df['SEX'], prefix='SEX', prefix_sep='_' )
这种方式是pandas官方推荐的定制路径,逻辑链路比生成后再重命名更短,执行效率更高。
- 完全自由指定列名的场景实现
如果原始分类值和目标列名没有对应关系,需要完全自定义每一列的名称,可在哑变量生成完成后直接按列顺序赋值最终列名,示例代码:
# 生成基础哑变量 dummy_variable = pd.get_dummies(df['SEX']) # 按哑变量列的生成顺序赋值目标列名 dummy_variable.columns = ['SEX_FEMALE', 'SEX_MALE']
注意:这种直接赋值列名的方式 需要提前确认哑变量的列生成顺序(默认与分类值的排序规则一致),避免出现列名和列内实际取值错配的问题。
内容的提问来源于stack exchange,提问作者Mahesh
相关产品推荐
相关产品推荐

