python 实现 hive中类似 lateral view explode 的功能

背景:加入现在有这样的数据,可能一条ocr代表两个label,并且label通过","分隔。我们想把数据转换成下面的。

原始数据:

labelocr
日常行车服务,汽车资讯去加油站,加完油后直接离开?最开心的可能是加油站的工作人员
社会民生已致2死20伤 !景区突遭尘卷风袭击,孩子被卷上天!现场画面曝光

目标数据:

labelocr
日常行车服务去加油站,加完油后直接离开?最开心的可能是加油站的工作人员
汽车资讯去加油站,加完油后直接离开?最开心的可能是加油站的工作人员
社会民生已致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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值