![](/img/trans.png)
[英]Creating dummy variables using pd.get_dummies in a for loop in Python
[英]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.