Python 如何使用pd.get_dummies()对类别列表进行伪编码?

Python 如何使用pd.get_dummies()对类别列表进行伪编码?,python,Python,我知道pd.get_dummies()非常适合创建一个虚拟集来表示分类变量(在我的案例中是决策树算法)。我的问题是,如何调整它以处理类别列表中的条目 MWE: 您可以分解类别列,然后调用pd.get\u dummies: print( pd.get_dummies(a.explode('category').set_index('id'), prefix='', prefix_sep='').groupby(level=0).sum() ) 印刷品: a b c id

我知道
pd.get_dummies()
非常适合创建一个虚拟集来表示分类变量(在我的案例中是决策树算法)。我的问题是,如何调整它以处理类别列表中的条目

MWE:


您可以分解
类别
列,然后调用
pd.get\u dummies

print( pd.get_dummies(a.explode('category').set_index('id'), prefix='', prefix_sep='').groupby(level=0).sum() )
印刷品:

    a  b  c
id         
i   1  1  0
j   0  1  0
k   0  0  1
l   0  1  1
    x   y  a  b  c
id                
i   p  10  1  1  0
j   q  20  0  1  0
k   r  30  0  0  1
l   s  40  0  1  1

编辑:要处理更多列,请首先在
类别
列上创建一个
pd.get_dummies()
,然后
。将
与原始数据框连接:

c = pd.get_dummies( a[['id', 'category']].explode('category').set_index('id'), prefix='', prefix_sep='').groupby(level=0).sum()
print( a.set_index('id').drop(columns='category').join(c) )
印刷品:

    a  b  c
id         
i   1  1  0
j   0  1  0
k   0  0  1
l   0  1  1
    x   y  a  b  c
id                
i   p  10  1  1  0
j   q  20  0  1  0
k   r  30  0  0  1
l   s  40  0  1  1

这是可行的,但我在询问我的MWE不够具体后才意识到。我还有其他需要保留的列。MWE已更新以反映这一点。你的答案可以修改吗?