2017-10-21 60 views
1

在我的数据框中,我有一个分类变量,我想将其转换为虚拟变量。然而,该塔具有由逗号分隔的多个值:将逗号分隔字符串的pandas列转换为虚拟变量

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 
+1

能否请您提供您已经给 – bunji

+0

你需要澄清你想表示一个虚拟变量具体是什么的例子预期的输出。这是一个数学概念,但它需要满足python变量系统的实际情况。 – jxramos

回答

1

使用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 
+0

我觉得很蠢....但这正是我想要做的。谢谢! – breakbotz

+0

你不应该。很少有人知道所有可用的功能,我们其他人都处于不同的学习阶段:)所有最好的 – Vaishali

+0

这可能是显而易见的,但如果您的数据由逗号和空格分隔,请确保将其包含在内!也就是''sep =',''否则,你会得到重复的列。 – Huey

相关问题