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已更新以反映这一点。你的答案可以修改吗?