背景:加入现在有这样的数据,可能一条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