2017-10-09 1 views
3

タイトルは本質的に私の問題を捉えています。複数の列に同じ値が含まれている場合、大きなデータフレームをホットエンコードする方法はありますか?

私はデータフレームを持っていて、複数の列には[0,1]などの値があります。もし私が行かなければならない場合は、dfをホットエンコードしてください。同じ名前の複数の列があります。

面倒な解決策は、手動でユニークな列を作成することですが、私は非常に効率的ではないようにカテゴリの58の列を持っています。

これは参考になるか分かりませんが、こちらは私のデータフレームのhead()です。

x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 ... z217 z218 z219 z220 z221 z222 subject phase state output 
0 0 0 1 -300.361218 0.886360 -2.590886 225.001899 0.006204 0.000037 -0.000013 ... 0.005242 0.024971 -1017.620978 -382.850838 -48.275711 -2.040336 A 3 B 0 
1 0 0 1 -297.126090 0.622211 -3.960940 220.179017 0.006167 -0.000014 -0.000003 ... 0.001722 0.023595 91.229094 24.802230 1.783950 0.022620 A 3 C 0 
2 0 0 1 -236.460253 0.423640 -12.656341 139.453445 0.006276 -0.000028 0.000022 ... -0.010894 -0.036318 -188.232347 -17.474861 -1.005571 -0.021628 A 3 B 0 
3 0 0 1 33.411458 2.854415 -1.962432 3.208911 0.009752 -0.000273 -0.000024 ... -0.034184 -0.047734 185.122907 -549.282067 542.193381 -178.049926 A 3 A 0 
4 0 0 1 -118.125214 2.009809 -3.291637 34.874176 0.007598 0.000001 -0.000022 ... 0.001963 0.004084 35.207794 -78.143166 57.084208 -13.700212 A 4 C 0 
+2

[最小、完全、検証可能な例](http://stackoverflow.com/help/mcve)は、ここで適用されます。問題の入力例を示してください(ここでは列の値に0,1,2などの値はありません)。また、結果として表示されるDFも表示してください。無関係の情報を取り除く(または、いくつかの列を保持する)。 – Prune

+0

私はそれを念頭に置いておきます。 – madsthaks

答えて

1

おそらくすでにpandas.get_dummiesが使用されていますか?そうでない場合、この関数はカテゴリ型カラムを複数のインジケータカラム(1つのホットエンコーディング)に変換します。

この関数には、具体的に存在する「接頭辞」引数があります。これは文字列のリスト(長さはデータフレームの列数と同じでなければなりません)です。あなたの場合でも、列名を接頭辞にマップする辞書にすることができます。だから、のようなもの:

pd.get_dummies(df, prefix={'x3': 'x3', 'x4': 'x4'}) 

x3_0, x3_1 ... x4_0, x4_1 ...

+0

これは私が必要とするものです。ありがとう! – madsthaks

+0

あなたが私の答えを受け入れることができるかどうか@madsthaksは感謝しています – shikhanshu

0

のようなこの意志追加列あなたはデータを読み取り、最初にカテゴリ変数のすべてのユニークな値のリストを取得することができます。次に、一意の値のリストに1つのホットエンコーダオブジェクト(sklearn.preprocessing.CategoricalEncoderなど)を収めることができます。

このメソッドは、列車のテストフレームワークやチャンクでデータを読み込んでいるときに役立ちます。 私はこれをすべて単独で行うPythonモジュールを作成しました。あなたはこのGitHubのリポジトリにそれを見つけることができます - この上dummyPy

短いチュートリアル - How to One Hot Encode Categorical Variables in Python?

関連する問題