熊猫不是一种热编码数据

时间:2018-07-04 13:35:10

标签: python pandas

此代码:

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

生成数据框:

enter image description here

尝试使用get_dummies对这个数据帧进行一次热编码:

pd.get_dummies(df)

提供相同的数据框:

enter image description here

如何使用get_dummies对数据帧进行热编码?

1 个答案:

答案 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