2017-11-15 18 views
1

おはようチャップス条件に基づいて、複数のブール列にいくつかの条件(str.containsに基づいてブールフラグを使用して複数のカラムへのデータフレームの列を爆発するパイソン - パンダ - DATAFRAME - 、

どれ神託の方法を、単一の列を爆発この場合)?

のは、私はこれを持っているとしましょう:

Position Letter 
1  a  
2  b  
3  c  
4  b  
5  b 

そして、私はこれを達成したいと思います:

Position Letter is_a  is_b is_C 
1  a  TRUE  FALSE FALSE 
2  b  FALSE TRUE FALSE 
3  c  FALSE FALSE TRUE 
4  b  FALSE TRUE FALSE 
5  b  FALSE TRUE FALSE 

は「ABC」を介してループで行うと明示的に新しいDF列を作成することができますが、いくつかの組み込みメソッドがすでにパンダに存在するかどうか疑問に思う。可能な値の数、したがって新しい列の数は可変です。

ありがとうございます。

+0

あなたは私たちにあなたがこれまでにしようとしているものの最小限の例を示していることはできますか?ここをクリックしてください:https://stackoverflow.com/help/how-to-ask – DimKoim

+0

for lt:レター: df [lt] = df.Letter.str.contains(lt) – Trostis

答えて

1

使用Series.str.get_dummies()

In [31]: df.join(df.Letter.str.get_dummies()) 
Out[31]: 
    Position Letter a b c 
0   1  a 1 0 0 
1   2  b 0 1 0 
2   3  c 0 0 1 
3   4  b 0 1 0 
4   5  b 0 1 0 

または

In [32]: df.join(df.Letter.str.get_dummies().astype(bool)) 
Out[32]: 
    Position Letter  a  b  c 
0   1  a True False False 
1   2  b False True False 
2   3  c False False True 
3   4  b False True False 
4   5  b False True False