2016-03-02 124 views
3

分离列我有一个数据帧熊猫用含有逗号分隔值的列:熊猫/ Python的:基于字典

a,c,f 
a,b,c,d,e 
c,g,f,b 
.. 

每一行都有一个不同的长度,不同的顺序和值。这是a到m的字母。

我想将它与0和1变成13列:

a b c d e f g h i j k l m 
1 0 0 0 0 1 0 0 0 0 0 0 0 
1 1 1 1 1 0 0 0 0 0 0 0 0 
0 1 1 1 1 0 0 0 0 0 0 0 0 

我怎么会在大熊猫/ Python 2.7版做到这一点有效? 我想创建一个列的基础上存在或不存在一个子字符串列的测试..但我不能相信有没有更有效的方式做它:)

回答

3

您可以使用get_dummies if column is a

print df.a 
0  a,c,f 
1 a,b,c,d,e 
2  c,g,f,b 
Name: a, dtype: object 

print df.a.str.get_dummies(sep=',') 
    a b c d e f g 
0 1 0 1 0 0 1 0 
1 1 1 1 1 1 0 0 
2 0 1 1 0 0 1 1 
+0

太好了,谢谢!我有get_dummies,但我已经获得了100多列。我不记得我做错了什么! 'sep'不会在get_dummies中显示为参数:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.html,怎么回事? - –

+0

我认为你需要['str.get_dummies'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.get_dummies.html)而不是['get_dummies'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.html) – jezrael

+0

哦,我明白了,谢谢! df.a.str.get_dummies()接受参数sep =','和pd.get_dummies(),它不接受参数sep =','有什么区别? –