将逗号分隔的字符串的pandas列转换为虚拟变量

bre*_*otz 6 python split pandas dummy-variable

在我的数据框中,我有一个分类变量,我想将其转换为虚拟变量.但是,此列有多个以逗号分隔的值:

0    'a'
1    'a,b,c'
2    'a,b,d'
3    'd'
4    'c,d'
Run Code Online (Sandbox Code Playgroud)

最后,我想为每个可能的离散值设置二进制列; 换句话说,最终列数等于原始列中唯一值的数量.我想我必须使用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
Run Code Online (Sandbox Code Playgroud)

Vai*_*ali 13

使用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
Run Code Online (Sandbox Code Playgroud)

  • 这可能很明显,但是如果您的数据用逗号和空格分隔,请确保将其包括在内!也就是说,`sep =','`否则,您将得到重复的列。 (2认同)

mic*_*mia 5

str.get_dummies函数不接受prefix参数,但您可以重命名返回的虚拟 DataFrame 的列名称:

data['col'].str.get_dummies(sep=',').rename(lambda x: 'col_' + x, axis='columns')
Run Code Online (Sandbox Code Playgroud)