2016-03-02 125 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 =','有什麼區別? –