私はExcelでこのテーブルを持っています:
id class
0 2 3
1 1 3
2 3 5
ここで、Python で「特別な」ワンホット エンコーディングを実行したいと考えています。最初のテーブルの各 ID には、2 つの数字があります。各番号はクラス (class1、class2 など) に対応しています。2 番目のテーブルは最初のテーブルに基づいて作成され、各 ID について、その行の各数値が対応するクラス列に表示され、他の列はゼロになります。たとえば、id 0 の番号は 2 と 3 です。2 は class2 に配置され、3 は class3 に配置されます。クラス 1、4、および 5 はデフォルトの 0 を取得します。結果は次のようになります。
id class1 class2 class3 class4 class5
0 0 2 3 0 0
1 1 0 3 0 0
2 0 0 3 0 5
私の以前の解決策、
foo = lambda x: pd.Series([i for i in x.split()])
result=onehot['hotel'].apply(foo)
result.columns=['class1','class2']
pd.get_dummies(result, prefix='class', columns=['class1','class2'])
結果:
class_1 class_2 class_3 class_3 class_5
0 0.0 1.0 0.0 1.0 0.0
1 1.0 0.0 0.0 1.0 0.0
2 0.0 0.0 1.0 0.0 1.0
(class_3 が 2 回表示されます)。これを修正するにはどうすればよいですか? (このステップの後、必要な最終的な形式に変換できます。)