有没有办法将数据框的行转置为列。
我有以下结构作为输入:
val inputDF = Seq(("pid1","enc1", "bat"),
("pid1","enc2", ""),
("pid1","enc3", ""),
("pid3","enc1", "cat"),
("pid3","enc2", "")
).toDF("MemberID", "EncounterID", "entry" )
inputDF.show:
+--------+-----------+-----+
|MemberID|EncounterID|entry|
+--------+-----------+-----+
| pid1| enc1| bat|
| pid1| enc2| |
| pid1| enc3| |
| pid3| enc1| cat|
| pid3| enc2| |
+--------+-----------+-----+
expected result:
+--------+----------+----------+----------+-----+
|MemberID|Encounter1|Encounter2|Encounter3|entry|
+--------+----------+----------+----------+-----+
| pid1| enc1| enc2| enc3| bat|
| pid3| enc1| enc2| null| cat|
+--------+----------+----------+----------+-----+
请建议是否有任何优化的直接API可用于将行转置为列。
我的输入数据规模相当大,因此像collect这样的操作我无法执行,因为它会获取所有驱动程序上的数据。
我正在使用Spark 2.x
entry
对于所有3个EncounterID
都有值,那该怎么办?是否只能有3个EncounterID
? - philantrovert