Pyspark 在多列中转置多行

问题描述 投票:0回答:1

我想将datafarme的多行转置到多列中,如下所示:

初始df:

代码 价值
S1 A 1 10
S1 B 2 15
S2 A 3 20
S2 B 4 25

最终df:

代码 数A 值A 数B 值B
S1 1 10 2 15
S2 3 20 4 25

尝试使用枢轴函数,我只能在计数和值之间转置一个

df = df.groupBy("Code").pivot("Cat").agg(f.first("Count"))

代码 A B
S1 1 2
S2 3 4

制作两个中间数据帧然后连接它们可能是唯一的方法?

dataframe apache-spark pyspark pivot transpose
1个回答
0
投票

无需加入,一次性即可进行多次聚合

result = df.groupBy('Code').pivot('Cat').agg(F.first('Count').alias('Count'), 
                                             F.first('Value').alias('Value'))

+----+-------+-------+-------+-------+
|Code|A_Count|A_Value|B_Count|B_Value|
+----+-------+-------+-------+-------+
|  S2|      3|     20|      4|     25|
|  S1|      1|     10|      2|     15|
+----+-------+-------+-------+-------+
© www.soinside.com 2019 - 2024. All rights reserved.