explode 列转行的 2 个常用技巧!

简介: explode 列转行的 2 个常用技巧!

在我们处理数据的过程中,经常会遇到这样的情况。

微信图片_20220218223912.jpg微信图片_20220218223936.jpg


工作中,比如用户画像的数据中也会遇到,客户使用的app类型就会以这种长列表的形式或者以逗号隔开的字符串形式展现出来。


那么面对这样的数据格式,我们希望把它转换为结构化的表,脑海中想象的是下面这种格式。


微信图片_20220218223915.jpg

使用pandas如何实现呢?


一、直接explode


其实非常简单,使用explode这个 爆炸” 方法即可,东哥平时喜欢叫它爆炸。其实,这个和hive中的lateral view explode有异曲同工的效果,也就是列转行” 的功能。


仍用上面这个例子,要达到想要的效果,只需要这么做。

df.explode('爱好')


微信图片_20220218223920.jpgimage.gif

看到爱好这个字段被爆炸开了,列表里所有特征都被转换为对应程序员的行数据。


但列表有重复的值,就可能导致爆炸出来的行存在重复行,如上面小码哥出现了两次敲代码。所以一般我们会在后面跟一个去重的方法。

df.explode('爱好').drop_duplicates()


微信图片_20220218223924.jpg

二、explode不能直接处理的


但是,explode这个爆炸方法只能处理列表元组Seriesnumpyndarray的类型。如果面对下面这种格式,该如何爆炸?


微信图片_20220218223936.jpg


其实也不难,只要运用一个小技巧即可,就是Series.str.split()分割字符串的方法来创建列表。


df["爱好"] = df["爱好"].str.split()

微信图片_20220218223936.jpg

然后,我们再用explode爆炸就完事了。

相关文章
|
2月前
|
SQL 数据处理
简单行转列
本文介绍了基于配送订单表的数据处理方法,包括使用 `collect_list`、`collect_set` 和 `sort_array` 函数实现行转列操作。通过 SQL 查询,实现了骑手 ID 和配送品类的统计,并对数据进行了去重和排序处理。此外,还提供了相关函数的详细说明和示例,以及数据准备的 SQL 语句。最后推荐了更多关于行转列和列转行的相关文章。
|
2月前
|
SQL JavaScript 前端开发
Hive学习-lateral view 、explode、reflect和窗口函数
Hive学习-lateral view 、explode、reflect和窗口函数
41 4
|
存储 数据挖掘 数据处理
dataframe应用str.contains+将多列连接成一列
dataframe应用str.contains+将多列连接成一列
133 0
|
SQL Oracle druid
listagg
listagg
143 3
|
Java 关系型数据库 Linux
|
Java 关系型数据库 Linux
|
Java 关系型数据库 Linux
|
关系型数据库 Oracle
|
移动开发 关系型数据库 Oracle