我想将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 |
制作两个中间数据帧然后连接它们可能是唯一的方法?
无需加入,一次性即可进行多次聚合
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|
+----+-------+-------+-------+-------+