我有一份如下格式的:

我需要把它转化成这样的东西:

有什么帮助吗?
发布于 2022-04-11 02:24:22
使用row_num创建一个新列row_number,然后使用pivot。详见下面的逻辑-
输入数据
df = spark.createDataFrame(data = [("Name", "ABC"),
("Number", "889"),
("Zip", "99882"),
("Name", "DEF"),
("Number", "998"),
("Zip", "99880")],
schema = ["Header", "Value"]
)
df.show()
+------+-----+
|Header|Value|
+------+-----+
| Name| ABC|
|Number| 889|
| Zip|99882|
| Name| DEF|
|Number| 998|
| Zip|99880|
+------+-----+现在使用row_num函数作为row_number创建一个新列。
from pyspark.sql.functions import *
from pyspark.sql import Window
df1 = df.withColumn("row_num", row_number().over(Window.partitionBy("Header").orderBy("Value")))最后,groupBy这个新创建的列,并在Header列上使用pivot。
df1.groupBy("row_num").pivot("Header").agg(first("Value")).drop("row_num").show()
+----+------+-----+
|Name|Number| Zip|
+----+------+-----+
| ABC| 889|99880|
| DEF| 998|99882|
+----+------+-----+https://stackoverflow.com/questions/71820137
复制相似问题