2016-11-30 17 views
0

私は、繰り返しコードA30、A31、A32、A33、A34を持つ1000行のデータフレーム(df ['Values')の列を持っています。私は5つの別々の列を作成する必要があります。見出しcolA30、colA31、colA32、colA33、colA34は、同じ行(df)の値の0または1で、 ']。例のためPandas DataFrameの単一列の値に基づいて複数の列を作成

:DF

Values colA30 colA31 colA32 colA33 colA34 
A32  0  0  1  0  0 
A30  1  0  0  0  0 
A31  0  1  0  0  0 
A34  0  0  0  0  1 
A33  0  0  0  1  0 

その場合はDFで行[「値」] A32は、その後colA32が1であるべきであり、他のすべての列がDFの[の列の残りの0のなどをする必要があります'値']。

私は次のようにしました。しかし、私は複数の列が複数の列が作成されるいくつかのコードを持つので、一度にそれを行うにはとにかくあります。

df['A30']=df['Values'].map(lambda x : 1 if x=='A30' else 0) 

df['A31']=df['Values'].map(lambda x : 1 if x=='A31' else 0) 

df['A32']=df['Values'].map(lambda x : 1 if x=='A32' else 0) 

df['A33']=df['Values'].map(lambda x : 1 if x=='A33' else 0) 

df['A34']=df['Values'].map(lambda x : 1 if x=='A34' else 0) 
+3

'pd.get_dummies(df.Values)'を探していますか? – Psidom

答えて

0

あなたは多くの方法でこれを行うことができます:

pandasでバイナリデータに、各カテゴリのデータを変換することができますpd.get_dummies()と呼ばれる機能があります。カテゴリの列に適用し、取得したデータフレームを元のデータフレームと連結します。 Hereは、ドキュメントへのリンクです。

もう1つの方法は、ライブラリsklearnとそのOneHotEncoderを使用することです。上記とまったく同じですが、オブジェクトは同じではありません。あなたはあなたのカテゴリデータに合わせてOneHotEncoderクラスのインスタンスを使うべきです。

あなたの場合はpd.get_dummies()を使用すると簡単に使用できます。

関連する問題