Python中如何将DataFrame指定多列转换为哑变量并拼接回原表
多列转哑变量并拼接回原DataFrame解决方法
你之前的代码仅生成了指定列的哑变量结果,未执行和原表的拼接操作,可通过以下两种方式实现需求:
方法1:手动生成哑变量后拼接
import pandas as pd # 定义需转换为哑变量的列列表 new_dum = ['V1','V4','V5','V15','V52'] # 可选操作:若原数值列需按分类属性转哑变量,先转为字符串类型 # traindf[new_dum] = traindf[new_dum].astype(str) # 生成哑变量 dumy_col = pd.get_dummies(traindf[new_dum], drop_first = True) # 剔除原表中已转换的原始列,和哑变量按列拼接 traindf_result = pd.concat([traindf.drop(new_dum, axis=1), dumy_col], axis=1)
方法2:直接指定columns参数(更推荐)
pd.get_dummies支持直接传入全量DataFrame,通过columns参数指定需转哑变量的列,自动保留其他原列并完成拼接:
new_dum = ['V1','V4','V5','V15','V52'] traindf_result = pd.get_dummies(traindf, columns=new_dum, drop_first=True)
注意事项
drop_first=True用于规避哑变量共线性问题,回归类模型建议保留,树模型可根据需求删除该参数- 若需保留原始列无需删除,方法1中去掉
drop(new_dum, axis=1)直接拼接即可 - 若目标列是连续数值,需先完成分箱(
pd.cut/pd.qcut)操作后再转哑变量
内容的提问来源于stack exchange,提问作者pratik kandalgaonkar
相关产品推荐
相关产品推荐

