Python 如何转置和转换到;“一个热编码”;从包含集合的列中选择样式?
我想对pandas列进行分解,类似于: 我想转置,然后是“一个热编码”风格。例如,采用数据帧dfPython 如何转置和转换到;“一个热编码”;从包含集合的列中选择样式?,python,pandas,numpy,scikit-learn,sklearn-pandas,Python,Pandas,Numpy,Scikit Learn,Sklearn Pandas,我想对pandas列进行分解,类似于: 我想转置,然后是“一个热编码”风格。例如,采用数据帧df Col1 Col2 C {Apple, Orange, Banana} A {Apple, Grape} B {Banana} 我想将其转换为: df Col1 C A B Apple 1 1 0 Orange 1 0 0 Banana 1 0 1 Grape
Col1 Col2
C {Apple, Orange, Banana}
A {Apple, Grape}
B {Banana}
我想将其转换为:
df
Col1 C A B
Apple 1 1 0
Orange 1 0 0
Banana 1 0 1
Grape 0 1 0
如何使用pandas/Sklearn实现这一点?这里有一个可能的答案(假设Col1是您的索引):
您可以转换多重热编码输出本身,然后创建一个数据帧
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
pd.DataFrame(mlb.fit_transform(df['Col2']).T, columns=df.Col1, index= mlb.classes_)
输出:
Col1 C A B
Apple 1 1 0
Banana 1 0 1
Grape 0 1 0
Orange 1 0 0
注意:我们仍然不能将其称为一个热编码。它是多个热编码,但以转换的形式
您可以进行一次热编码(如在链接的答案中),然后使用df=df.T
Col1 C A B
Apple 1 1 0
Banana 1 0 1
Grape 0 1 0
Orange 1 0 0