python 實現 hive中類似 lateral view explode 的功能

背景:加入現在有這樣的數據,可能一條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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章