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 JavaScript 前端开发
Hive学习-lateral view 、explode、reflect和窗口函数
Hive学习-lateral view 、explode、reflect和窗口函数
45 4
|
存储 数据挖掘 数据处理
dataframe应用str.contains+将多列连接成一列
dataframe应用str.contains+将多列连接成一列
133 0
|
6月前
|
索引 Python
pandas读取某列、某行数据——loc、iloc用法总结
pandas读取某列、某行数据——loc、iloc用法总结
707 2
Pandas groupby分组后求各组行数
Pandas groupby分组后求各组行数
Pandas groupby分组后求各组行数
|
Python
10 numpy 聚合函数 - where,unique
=== np.where函数 === np.where( 判断条件[布尔类型数组],True使用的值,False使用的值 ) 例1:两组数据,取对应位置较大的值 arr1 = np.
1160 0
|
Java 关系型数据库 Linux
|
Java 关系型数据库 Linux
|
Java 关系型数据库 Linux