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

如何在pd.get_dummies()中保留原始列名生成带前缀的独热编码列

用pd.get_dummies()生成「列名_值」格式的独热编码列

我有一组值均为字符串的列,需要使用pd.get_dummies()进行独热编码。希望生成的新列保留原始列名与对应值的组合,例如原始列名为Street、值为Paved和Not Paved时,生成的列名为Street_Paved和Street_Not_Paved。请问是否可行?即prefix参数采用{i}_{value}格式(i对应cols循环中的列名)。我的代码如下:

cols = ['Street', 'Alley', 'CentralAir', 'Utilities', 'LandSlope', 'PoolQC']
pd.get_dummies(df, columns = cols, prefix = '', prefix_sep = '')

完全可行,你只需要调整prefix和prefix_sep的参数设置即可,不需要手动拼接格式:

  • 将prefix参数设置为你传入的列名列表cols,这样每个列会以自身列名作为前缀
  • 将prefix_sep设置为'_',作为列名和值之间的分隔符

示例代码

import pandas as pd

# 构造示例数据
data = {
    'Street': ['Paved', 'Not Paved', 'Paved'],
    'CentralAir': ['Y', 'N', 'Y']
}
df = pd.DataFrame(data)
cols = ['Street', 'CentralAir']

# 正确的独热编码调用
dummies_df = pd.get_dummies(df, columns=cols, prefix=cols, prefix_sep='_')
print(dummies_df)

输出结果

Street_Not Paved  Street_Paved  CentralAir_N  CentralAir_Y
0                 0             1             0             1
1                 1             0             1             0
2                 0             1             0             1

你之前的代码把prefix设为空字符串,会导致生成的列名只有对应的值,不仅不符合需求,还可能出现不同列值重复时的列名冲突问题,调整参数后就能完美得到「原始列名_值」格式的新列名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:45:48