2016-04-11 6 views
3

からブール列を作成:パンダ - 私はこのようになりますパンダのデータフレームの列を配置していカテゴリ欄

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

を私は次の操作を実行したいと思います:

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

私は私ができる知っています

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

次に、列ごとに辞書を作成し、マップ関数を適用します。

#Example just for is_Berlin column 
d = {'Berlin': 1,'Prague': 0,'Mexico': 0} 
df['is_Berlin'] = df['is_Berlin'].map(d) 

しかし、私は、これは何とか面倒見つけ、私はそれをどのように行うの素敵な神託の方法があると信じています。

答えて

4

あなたはstr.get_dummiesを使用することができると、元DataFrameに、この新しい列を追加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

重複がある場合に答えるなぜ? –

+0

重複していますか?リンクを付けることはできますか? – jezrael

+0

すごい!既存のデータフレームにそれらを追加する方法はありますか?Column Placeは実際に私のデータフレームの一部であり、3つの新しい列で置き換えたいと思っています。 – HonzaB

関連する問題