Python 如何转置和转换到;“一个热编码”;从包含集合的列中选择样式?

Python 如何转置和转换到;“一个热编码”;从包含集合的列中选择样式?,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

我想对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       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