此代码:
df = pd.DataFrame({ 'id_val' : [1.0 , 2.0, 3.0] , 'c1': [1.0 , 2.0, 3.0], 'c2': [1.0 , 2.0, 3.0], 'c3': [1.0 , 2.0, 3.0] })
df
生成数据框:
尝试使用get_dummies对这个数据帧进行一次热编码:
pd.get_dummies(df)
提供相同的数据框:
如何使用get_dummies
对数据帧进行热编码?
答案 0 :(得分:1)
将值转换为string
:
print (pd.get_dummies(df.astype(str)))
id_val_1.0 id_val_2.0 id_val_3.0 c1_1.0 c1_2.0 c1_3.0 c2_1.0 c2_2.0 \
0 1 0 0 1 0 0 1 0
1 0 1 0 0 1 0 0 1
2 0 0 1 0 0 1 0 0
c2_3.0 c3_1.0 c3_2.0 c3_3.0
0 0 1 0 0
1 0 0 1 0
2 1 0 0 1
如果仅要从c
列中获取虚拟变量,则:
df1 = (pd.get_dummies(df.filter(like='c').astype(str), prefix_sep='', prefix='')
.max(axis=1, level=0))
print (df1)
1.0 2.0 3.0
0 1 0 0
1 0 1 0
2 0 0 1