2014-03-24 50 views
7

我以前見過這個,根本記不清這個函數。從熊貓的單個字符串列中創建新的二進制列

說我有一列「速度」和每行有這些值的1:

'Slow', 'Normal', 'Fast' 

如何創建與除列「速度」也就是現在的3列我的所有行一個新的數據幀:「緩慢」「正常」和「快速」,其中所有行都標有1,舊的「速度」列爲無論哪一列。所以,如果我有:

print df['Speed'].ix[0] 
> 'Normal' 

我不希望這樣的:

print df['Normal'].ix[0] 
>1 

print df['Slow'].ix[0] 
>0 

回答

10

你可以用pd.get_dummies做到這一點很容易(docs):

In [37]: df = pd.DataFrame(['Slow', 'Normal', 'Fast', 'Slow'], columns=['Speed']) 

In [38]: df 
Out[38]: 
    Speed 
0 Slow 
1 Normal 
2 Fast 
3 Slow 

In [39]: pd.get_dummies(df['Speed']) 
Out[39]: 
    Fast Normal Slow 
0  0  0  1 
1  0  1  0 
2  1  0  0 
3  0  0  1 
+0

get_dummies是它!謝謝! – user1610719

2

這裏是一個解決方案:

df['Normal'] = df.Speed.apply(lambda x: 1 if x == "Normal" else 0) 
df['Slow'] = df.Speed.apply(lambda x: 1 if x == "Slow" else 0) 
df['Fast'] = df.Speed.apply(lambda x: 1 if x == "Fast" else 0) 
相關問題