如何在单次热编码中将1更改为另一个值

时间:2019-05-06 05:09:57

标签: dataframe one-hot-encoding

我想知道如何在数据帧中进行一次热编码,然后在列中将值1更改为另一个值。

例如,有一个数据框:

   a      b      c
1  01     red   12
2  01     blue  5
3  02     blue  14
4  02     grey  4
5  03     grey  3


if I want to get:

   a      b         
1  01     (1,1,0)   
3  02     (0,1,1)   
5  03     (0,0,1)   

首先更改为列表:

df=df.groupby('a')['b'].apply(list)

然后将一系列更改为数据框:

dict_df = {'a':df.index,'b':df.values}
df = pd.DataFrame(dict_df)

然后使用一种热编码:

mlb1 = MultiLabelBinarizer()
df = df.join(pd.DataFrame(mlb1.fit_transform(df.pop('b')),columns=mlb1.classes,index=df.index))

如何获取新的数据框,如:

   a      b         
1  01     (12,5,0)   
3  02     (0,14,4)   
5  03     (0,0,3)

0 个答案:

没有答案