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爆炸就完事了。

相关文章
|
3月前
|
SQL 数据处理
简单行转列
本文介绍了基于配送订单表的数据处理方法,包括使用 `collect_list`、`collect_set` 和 `sort_array` 函数实现行转列操作。通过 SQL 查询,实现了骑手 ID 和配送品类的统计,并对数据进行了去重和排序处理。此外,还提供了相关函数的详细说明和示例,以及数据准备的 SQL 语句。最后推荐了更多关于行转列和列转行的相关文章。
|
存储 数据挖掘 数据处理
dataframe应用str.contains+将多列连接成一列
dataframe应用str.contains+将多列连接成一列
138 0
|
7月前
|
SQL Oracle 关系型数据库
Oracle数据库之PIVOT实现行转列
Oracle数据库之PIVOT实现行转列
209 0
|
SQL Oracle druid
listagg
listagg
157 3
|
Python
实现DataFrame的自定义排序
要实现DataFrame的自定义排序,可以使用pandas库中的sort_values()函数。首先,需要导入pandas库,然后创建一个DataFrame,接着使用sort_values()函数对指定列进行排序。
432 0
|
SQL 数据可视化 数据挖掘
再见,Excel数据透视表;你好,pd.pivot_table
Excel作为Office常用办公软件之一,其在一名数据分析师的工作日常中也占有一定地位,比如个人就常常倾向于依赖Excel完成简单的数据处理和可视化作图,其中数据处理部分则主要是运用内置函数+数据透视表两大部分。 Excel数据透视表虽好,但在pandas面前它也有其不香的一面!
254 0
再见,Excel数据透视表;你好,pd.pivot_table
|
前端开发
左右两列同高
实现左右两个div高度随着另一个div高度的变化而变化,取最大值 下面上css .content { display: table; } .left { display: table-cell; width: 200px; /*如果两个div需要隔开,我们可以设置div的边框*/ border-right: 20px solid #f2f2f2; } .
936 0
|
关系型数据库 Oracle
|
移动开发 关系型数据库 Oracle