行转列、列转行
SQL, Python实现
Contents
SQL, Python 中解决行转列、列转行的问题
在日常工作中总会遇到类似下图中的问题 👇
我把这种情况称为 行转列
《Python for Data Analysis》 书中将其称为 Pivoting “Wide” to “Long” Format
还有这种问题 👇
我把这种情况称为 列转行
《Python for Data Analysis》 书中将其称为 Pivoting “Long” to “Wide” Format
那么,接下来将针对此类问题,汇总SQL、Python中的实现方式
行转列 / “Wide” to “Long”
SQL
基于 spark-2.4.5U3 及以上版本
|
|
基本思路是将表中 range_label
和nums
转化为类似json
的格式,之后通过 key
索引得到对应的value
这里用的是collect_set()
,得到的是聚合、去重后无序的array
,若需要有序则可用sort_array()
Python
构造数据
|
|
pivot() 函数
|
|
列转行 / “Long” to “Wide”
SQL
基于 spark-2.4.5U3 及以上版本
|
|
map
之后,结合 lateral view explode
1 实现列转行的问题
Python
构造数据
|
|
stack()函数
|
|