我想知道如何在数据帧中进行一次热编码,然后在列中将值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)