やりたいこと
ダミー変数化されたデータを1列に戻したかった。
数十行にも及ぶ被りのないフラグデータをそのまま持っているとかままあると思うのですが、見づらいし扱いづらいという状態でした。
理由
ダミー変数化されたデータとされていないデータが混在している中で、処理を分岐させたくなかったのでデータを変形させることにした。
かなり使い道少なさそうですが…
機械学習とかでフラグが別カラムについているけど、ターゲットエンコーディングをしたいみたいな事があれば使える…??
コード
大したことはしていないです。
元々のデータのインデックスを持った空のSeriesを生成。
値が1のインデックスを取得し、そのインデックスの値をカラム名で書き換えてあげればOKです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
path = 'my.csv' df = pd.read_csv(path) # ダミー変数化 dummy_df = pd.get_dummies(df['weather']) #直列化 undummied_series = pd.Series(index=dummy_df.index) for col in dummy_df.columns: undummied_series[dummy_df[col] == 1] = dummy_df[col].name undummied_series |