python_將one hot encoding後的Dummy table 轉為一般raw data格式
pd.melt()
Published in
2 min readJan 9, 2020
這是一個很難以敘述的需求,一般情境上不大會用到,但偏偏在公司的問卷系統就遇到了...。先說明一下情境,下圖是我撈下來的raw data:
Q1代表消費者勾選的第一題,Q2是多選題,因此會出現類似Dummy table的呈現方式。但由於後續我的分析希望是轉至成類似下面的raw data:
也就是資料是往下長的。查了一些資料,發現pd.melt最符合需求:
程式碼如下:
import pandas as pd
import numpy as np
df1 = pd.read_excel('XXXXX',encoding='ansi', sep=',')
pd.melt(df1,id_vars=['問卷UUID'],value_vars=['Q2#-1','Q2#-2','Q2#-3','Q2#-4','Q2#-5','Q2#-6','Q2#-7','Q2#-8']).dropna()
結果如下:
稍微說明一下:
id_vars:不需要被轉換的列名。
value_vars:需要轉換的列名。