案例场景如下:需要将表1转为表2
表1
fanju_nametag《国王排名》励志、奇幻、冒险、离谱《动物狂想曲》奇幻、恋爱、校园《异度侵入》原创、科幻、推理表2
fanju_nametag《国王排名》励志《国王排名》奇幻《国王排名》冒险《国王排名》离谱《动物狂想曲》奇幻《动物狂想曲》恋爱《动物狂想曲》校园《异度侵入》原创《异度侵入》科幻《异度侵入》推理此次案例需求可以借助宽数据转长数据方法进行简单调整,即可实现 。
目录
- 一、Excel
- 二、R
- 三、Python
- 四、Hive
一、Excel 实现关键词:逆透视
(1)打开PowQuery:数据——来自表格
(2)分割字符:转换——拆分列——按分隔符
(3)逆透视:选中fanju_name——逆透视其他列
(4)调整:删除无关列——关闭并上载
二、R 实现关键词:separate_rows
library(tidyr)data<-read.csv("data.csv")separate_rows(data,tag,sep = "、") R中操作十分简单,
tidyr包下的separate_rows函数可以一键解决 。当然,我们也可以依照先分割后逆透视的思路进行处理,结果如下三、Python 实现关键词:explode
import pandas as pddata = https://tazarkount.com/read/pd.read_csv("data.csv",encoding='gbk')data['tag'] = data['tag'].str.split("、")data.explode("tag")四、Hive 实现关键词:lateral view + explode
(1)启动Hadoop集群和Hive,创建相应表并上传数据至HDFS
create table fanju_table (fanju_name string,tag string) row format delimited fields terminated by ',';load data local inpath "/opt/module/hive/data.csv" into table fanju_table; 注意:中文csv文件上传到linux时,必须修改为utf-8编码,否则会乱码!
(2)查询数据
SELECT fanju_name, new_tagFROMfanju_tablelateral VIEW explode(split(tag,"、")) tag_tmp as new_tag;总结:从以上的案例中分析可知,此类型的数据处理逻辑其实都可以按照先分割后逆透视思路展开 。当然,除了逆透视外,Python和Hive中还提供的炸裂函数可一键处理 。最简便的还是R语言中的separate_rows函数,一行代码即可解决问题
【五分钟学会四种一行转多行方法——Excel、R、Python、Hive】以上就是本次分享的全部内容~
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
