我目前正在尝试转换下面的数据框:
0 Cat Chicken
1 Fish Chicken
2 Fish Cat
3 Cat Chicken
4 Dog Cat
要
Cat Fish Dog Chicken
0 1 0 0 1
1 0 1 0 1
2 1 1 0 0
3 1 0 0 1
4 1 0 1 0
到目前为止,我只能成功地完成了奇异列的Label Binarizer。我可以想象以蛮力的方式这样做,我循环通过一切并有条不紊地检查。但是,这会导致运行时间很长。因此,有更聪明的方法吗?
答案 0 :(得分:3)
df.apply(','.join,1).str.get_dummies(sep=',')
Out[51]:
Cat Chicken Dog Fish
0 1 1 0 0
1 0 1 0 1
2 1 0 0 1
3 1 1 0 0
4 1 0 1 0
答案 1 :(得分:2)
将带有前缀和前缀分隔符的get_dummies
用作空字符串,即
pd.get_dummies(df,prefix='',prefix_sep='').groupby(level=0, axis=1).max() # Thanks @ coldspeed
Cat Chicken Dog Fish
0 1 1 0 0
1 0 1 0 1
2 1 0 0 1
3 1 1 0 0
4 1 0 1 0