gpt4 book ai didi

python - 如何在pyspark中转置数据帧?

转载 作者:行者123 更新时间:2023-12-04 08:07:59 25 4
gpt4 key购买 nike

如何在 Pyspark 中转置列?我想让列变成行,行变成列。
这是输入:

+---- +------+-----+-----+
|idx | vin |cur | mean|
+---- +------+-----+-----+
|Type1| D| 5.0 |6.0 |
|Type2| C| null| 7.0 |
+---- +------+-----+-----+
预期结果:
+---- +------+-----+
|idx |Type1 |Type2|
+---- +------+-----+
|vin | D | C |
|cur | 5.0 | null|
|mean | 6.0 | 7.0 |
+-----+------+-----+

最佳答案

您可以组合 stack 取消旋转的功能 vin , meancur列然后 pivot栏目 idx :

from pyspark.sql import functions as F

df1 = df.selectExpr("idx", "stack(3, 'vin',vin, 'cur',cur, 'mean',mean)") \
.select("idx", "col0", "col1") \
.groupBy("col0") \
.pivot("idx").agg(F.first("col1")) \
.withColumnRenamed("col0", "idx")

df1.show(truncate=False)

#+----+-----+-----+
#|idx |Type1|Type2|
#+----+-----+-----+
#|vin |D |C |
#|mean|6.0 |7.0 |
#|cur |5.0 |null |
#+----+-----+-----+
您可以一一应用转换,以了解它是如何工作的以及每个部分的作用。

关于python - 如何在pyspark中转置数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66128053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com