如何在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
相关产品推荐
相关产品推荐

