出现在多列中的单词的一次性编码
One-hot encoding for words which occur in multiple columns
我想根据分类数据创建热编码数据,您可以在此处查看。
Label1 Label2 Label3
0 Street fashion Clothing Fashion
1 Clothing Outerwear Jeans
2 Architecture Property Clothing
3 Clothing Black Footwear
4 White Photograph Beauty
问题(对我来说)是一个特定的标签(例如衣服)可以在标签 1、标签 2 或标签 3 中。我试过 pd.get_dummies
但创建的数据如下:
Label1_Clothing Label2_Clothing Label3_Clothing
0 0 1 0
1 1 0 0
2 0 0 1
有没有办法让每个标签只有一个虚拟变量列?所以更确切地说:
Label_Clothing Label_Street Fashion Label_Architecture
0 1 1 0
1 1 0 0
2 1 0 1
我对编程还很陌生,很高兴能得到你的帮助。
最好的,
贝尔纳多
您可以将您的数据框堆叠成一个 Series
,然后从中获取假人。从那里,您可以利用外部层的最大值将数据折叠回其原始形状,同时保持标签的位置:
dummies = pd.get_dummies(df.stack()).max(level=0)
print(dummies)
Architecture Beauty Black Clothing Fashion Footwear Jeans Outerwear Photograph Property Street fashion White
0 0 0 0 1 1 0 0 0 0 0 1 0
1 0 0 0 1 0 0 1 1 0 0 0 0
2 1 0 0 1 0 0 0 0 0 1 0 0
3 0 0 1 1 0 1 0 0 0 0 0 0
4 0 1 0 0 0 0 0 0 1 0 0 1
我想根据分类数据创建热编码数据,您可以在此处查看。
Label1 Label2 Label3
0 Street fashion Clothing Fashion
1 Clothing Outerwear Jeans
2 Architecture Property Clothing
3 Clothing Black Footwear
4 White Photograph Beauty
问题(对我来说)是一个特定的标签(例如衣服)可以在标签 1、标签 2 或标签 3 中。我试过 pd.get_dummies
但创建的数据如下:
Label1_Clothing Label2_Clothing Label3_Clothing
0 0 1 0
1 1 0 0
2 0 0 1
有没有办法让每个标签只有一个虚拟变量列?所以更确切地说:
Label_Clothing Label_Street Fashion Label_Architecture
0 1 1 0
1 1 0 0
2 1 0 1
我对编程还很陌生,很高兴能得到你的帮助。
最好的, 贝尔纳多
您可以将您的数据框堆叠成一个 Series
,然后从中获取假人。从那里,您可以利用外部层的最大值将数据折叠回其原始形状,同时保持标签的位置:
dummies = pd.get_dummies(df.stack()).max(level=0)
print(dummies)
Architecture Beauty Black Clothing Fashion Footwear Jeans Outerwear Photograph Property Street fashion White
0 0 0 0 1 1 0 0 0 0 0 1 0
1 0 0 0 1 0 0 1 1 0 0 0 0
2 1 0 0 1 0 0 0 0 0 1 0 0
3 0 0 1 1 0 1 0 0 0 0 0 0
4 0 1 0 0 0 0 0 0 1 0 0 1