有什么方法可以将数据帧行转置为列。 我有以下结构作为输入:如何将行转换为火花数据帧中的列,scala
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
条目将只有一个值。并且是EncounterID是固定的,将只有3个EncounterID。 – Kalpesh
你确定这是你期望的结果吗?所有三个Encounter列总是具有相同的值... – Oli