背景:加入現在有這樣的數據,可能一條ocr代表兩個label,並且label通過","分隔。我們想把數據轉換成下面的。
原始數據:
label | ocr |
日常行車服務,汽車資訊 | 去加油站,加完油後直接離開?最開心的可能是加油站的工作人員 |
社會民生 | 已致2死20傷 !景區突遭塵捲風襲擊,孩子被捲上天!現場畫面曝光 |
目標數據:
label | ocr |
日常行車服務 | 去加油站,加完油後直接離開?最開心的可能是加油站的工作人員 |
汽車資訊 | 去加油站,加完油後直接離開?最開心的可能是加油站的工作人員 |
社會民生 | 已致2死20傷 !景區突遭塵捲風襲擊,孩子被捲上天!現場畫面曝光 |
實現辦法:
1.通過hive代碼:
select ocr,split(tag_info,',') label
from
(
select label,ocr
from t1
lateral view explode(split(label,',')) TableName as tag_info
) t;
要注意的是一定要添加 t 語句另命名。
2.通過python代碼:
df0 = pd.DataFrame({'A':[[1,2],[5,6]],'B':[10,-20]})
df0 = df
df0.columns = ['A','B']
rows = []
for i, row in df0.iterrows():
for a in row.A.split(","):
rows.append((a, row.B))
df222 = pd.DataFrame(rows, columns=df.columns)
df222