2016-10-01 6 views
2

私は、次のパンダのデータフレームを持っている:パンダのDataFrameカラムをバイナリの "値テーブル"を作成するためにピボットするには?

import pandas as pd 
df = pd.read_csv("filename.csv") 

df 
    A B   C   D  E  
0 a 0.469112 -0.282863 -1.509059 cat 
1 c -1.135632 1.212112 -0.173215 dog 
2 e 0.119209 -1.044236 -0.861849 dog 
3 f -2.104569 -0.494929 1.071804 bird 
4 g -2.224569 -0.724929 2.234213 elephant 
... 

私はデータフレームは、このようになりますようcolumn Eにカテゴリ値のアイデンティティに基づいて複数の列を作成したいと思います:

df 
     A B   C   D  cat dog  bird elephant ....  
    0 a 0.469112 -0.282863 -1.509059 -1  0  0  0 
    1 c -1.135632 1.212112 -0.173215 0  -1  0  0 
    2 e 0.119209 -1.044236 -0.861849 0  -1  0  0 
    3 f -2.104569 -0.494929 1.071804 0  0  -1  0 
    4 g -2.224569 -0.724929 2.234213 0  0  0  0 
    ... 

すなわち、私は列Eの値をEの値に基づいてバイナリ行列にピボットし、その値が存在する場合は1、それ以外の場合は0を返します(ここでは、私は-1または "負の2進行列")?

私はパンダのどの機能がこれを最もよくしているのかわからない:おそらくpandas.DataFrame.unstack()

洞察力がありがとう!

答えて

2

使用pd.concatdrop、およびget_dummies

pd.concat([df.drop('E', 1), pd.get_dummies(df.E).mul(-1)], axis=1) 

enter image description here

+0

ありがとう!私はこれに特別な機能が必要だと思っていた... – ShanZhengYang

関連する問題