在我的数据框中,我有一个分类变量,我想将其转换为虚拟变量。但是,此列有多个以逗号分隔的值:
0 'a'
1 'a,b,c'
2 'a,b,d'
3 'd'
4 'c,d'
最终,我想为每个可能的离散值设置二进制列;换句话说,最终列数等于原始列中唯一值的数量。我想我必须使用split()来获取每个单独的值但不确定之后要做什么。任何提示都非常赞赏!
编辑:附加扭曲。列具有空值。并且在回应评论时,以下是期望的输出。谢谢!
a b c d
0 1 0 0 0
1 1 1 1 0
2 1 1 0 1
3 0 0 0 1
4 0 0 1 1
答案 0 :(得分:11)
使用str.get_dummies
df['col'].str.get_dummies(sep=',')
a b c d
0 1 0 0 0
1 1 1 1 0
2 1 1 0 1
3 0 0 0 1
4 0 0 1 1
答案 1 :(得分:0)
str.get_dummies
函数不接受prefix
参数,但是您可以重命名返回的虚拟DataFrame的列名:
data['col'].str.get_dummies(sep=',').rename(lambda x: 'col_' + x, axis='columns')