【Python】ダミー変数化されたデータを1列に戻す

【Python】ダミー変数化されたデータを1列に戻す


 

やりたいこと

ダミー変数化されたデータを1列に戻したかった。 数十行にも及ぶ被りのないフラグデータをそのまま持っているとかままあると思うのですが、見づらいし扱いづらいという状態でした。

理由

ダミー変数化されたデータとされていないデータが混在している中で、処理を分岐させたくなかったのでデータを変形させることにした。 かなり使い道少なさそうですが…

機械学習とかでフラグが別カラムについているけど、ターゲットエンコーディングをしたいみたいな事があれば使える…??

コード

大したことはしていないです。

元々のデータのインデックスを持った空のSeriesを生成。 値が1のインデックスを取得し、そのインデックスの値をカラム名で書き換えてあげればOKです。

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