我有如下输入csv文件-
plant_id, system1_id, system2_id, system3_id
A1 s1-111 s2-111 s3-111
A2 s1-222 s2-222 s3-222
A3 s1-333 s2-333 s3-333
我想把下面的记录整理一下
plant_id system_id system_name
A1 s1-111 system1
A1 s2-111 system2
A1 s3-111 system3
A2 s1-222 system1
A2 s2-222 system2
A2 s3-222 system3
A3 s1-333 system1
A3 s2-333 system2
A3 s3-333 system3
目前,我可以通过为每个系统列创建一个转置的pyspark df,然后在所有df的末尾执行union来实现它。但是它需要写一段很长的代码。有没有办法用几行代码来实现呢?
2条答案
按热度按时间wfveoks01#
1准备样本输入数据
2创建输入数据列列表
columns = ['plant_id','system1_id','system2_id','system3_id']
三。创建sparkDataframe4我们正在使用
stack()
函数将多列分隔为行。这是你的名字stack
函数语法:stack(n, expr1, ..., exprk)
-分隔expr1
, ...,exprk
进入n
排。yptwkmov2#
使用
stack
: