繁体   English   中英

pd.get_dummies() 如何用于对类别列表进行虚拟编码?

[英]How can pd.get_dummies() be used to dummy-code a list of categories?

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

MWE:

import pandas as pd

a = pd.DataFrame({
   'id': ['i', 'j', 'k', 'l'], 
   'category': [['a', 'b'], 'b', 'c', ['b', 'c']],
   'x': ['p', 'q', 'r', 's'],
   'y': [10, 20, 30, 40]
})

...

a_dummied

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

您可以展开category列,然后调用pd.get_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

编辑:要使用更多列,首先在category列上创建pd.get_dummies() ,然后.join原始 dataframe:

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) )

印刷:

    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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM