【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