2016-04-11 13 views
3

I Spalte Platz in Pandas Datenrahmen haben, die wie folgt aussieht:Pandas - erstellen boolean Spalten aus kategorischen Spalte

**Place** 
Berlin 
Prague 
Mexico 
Prague 
Mexico 
... 

Ich möchte folgendes tun:

is_Berlin is_Prague is_Mexico 
1   0   0 
0   1   0 
0   0   1 
0   1   0 
0   0   1 

Ich weiß, ich kann Erstellen Sie die Spalten separat:

df['is_Berlin'] = df['Place'] 
df['is_Prague'] = df['Place'] 
df['is_Mexico'] = df['Place'] 

Und dann erstellen Sie ein Wörterbuch für jede Spalte und wenden Sie eine Kartenfunktion.

Aber ich finde das irgendwie langweilig und ich glaube, es gibt schöne pythonische Art und Weise, wie es geht.

Antwort

4

können Sie str.get_dummies verwenden und wenn benötigen diese neuen Spalten ursprünglichen DataFrame hinzuzufügen, verwenden concat:

df1 = df.Place.str.get_dummies() 
print df1 
    Berlin Mexico Prague 
0  1  0  0 
1  0  0  1 
2  0  1  0 
3  0  0  1 
4  0  1  0 

df1.columns = ['is_' + col for col in df1.columns] 
print df1 
    is_Berlin is_Mexico is_Prague 
0   1   0   0 
1   0   0   1 
2   0   1   0 
3   0   0   1 
4   0   1   0 
df = pd.concat([df, df1], axis=1) 
print df 
    Place is_Berlin is_Mexico is_Prague 
0 Berlin   1   0   0 
1 Prague   0   0   1 
2 Mexico   0   1   0 
3 Prague   0   0   1 
4 Mexico   0   1   0 

#if there is more columns, you can drop Place column 
df = df.drop('Place', axis=1) 
print df 
    is_Berlin is_Mexico is_Prague 
0   1   0   0 
1   0   0   1 
2   0   1   0 
3   0   0   1 
4   0   1   0 
+0

warum beantworten, wenn ein Duplikat gibt es? –

+0

Duplizieren? Kannst du einen Link geben? Aber es ist möglich, ich antworte zuerst, finde keine Duplikate :(. – jezrael

+0

Großartig! Gibt es eine Möglichkeit, diese zu bestehenden Datenrahmen hinzuzufügen? Spalte Ort ist eigentlich Teil meines Datenrahmens und ich möchte es durch diese 3 neuen Spalten ersetzen. – HonzaB

Verwandte Themen