У меня есть фрейм данных, как показано ниже
+----------+----+----+----+
| date|col1|col2|col3|
+----------+----+----+----+
|2021-05-01| 20| 30| 40|
|2021-05-02| 200| 300| 10|
+----------+----+----+----+
Я хочу повернуть / транспонировать этот фрейм данных как
+-----+----------+----------+
|col |2021-05-01|2021-05-02|
+-----+----------+----------+
|Col1 | 20| 200|
|Col1 | 30| 300|
|Col1 | 40| 10|
+-----+----------+----------+
Другие статьи о stackoverflow, такие как this и это помогло мне в некоторой степени, но я смог найти решение .
Мои подходы были (все неудачные попытки)
scala> dUnion.groupBy("date").pivot("date").agg(first("col1")).show()
+----------+----------+----------+
| date|2021-05-01|2021-05-02|
+----------+----------+----------+
|2021-05-02| null| 200|
|2021-05-01| 20| null|
+----------+----------+----------+
scala> dUnion.groupBy("date", "col1", "col2", "col3").pivot("date").agg(first("col1")).show()
+----------+----+----+----+----------+----------+
| date|col1|col2|col3|2021-05-01|2021-05-02|
+----------+----+----+----+----------+----------+
|2021-05-02| 200| 300| 10| null| 200|
|2021-05-01| 20| 30| 40| 20| null|
+----------+----+----+----+----------+----------+
Но шкаф, который я мог придумать, был
scala> dUnion.groupBy().pivot("date").agg(first("col1")).show()
+----------+----------+
|2021-05-01|2021-05-02|
+----------+----------+
| 20| 200|
+----------+----------+
stack
- это другой взгляд на эту проблему, и у меня он сработал. 16.06.2021