【发布时间】:2020-05-29 08:36:10
【问题描述】:
当列数相当低并且列的名称可以硬编码时,我已经看到了unpivot 火花数据帧的一些解决方案。您是否有一个可扩展的解决方案来取消透视具有大量列的数据框?
下面是一个玩具题。
输入:
val df = Seq(
(1,1,1,0),
(2,0,0,1)
).toDF("ID","A","B","C")
+---+--------+----+
| ID| A | B | C |
+---+--------+-----
| 1| 1 | 1 | 0 |
| 2| 0 | 0 | 1 |
+---+----------+--+
预期结果:
+---+-----+-----+
| ID|names|count|
+---+-----------|
| 1| A | 1 |
| 1| B | 1 |
| 1| C | 0 |
| 2| A | 0 |
| 2| B | 0 |
| 2| C | 1 |
+---+-----------+
该解决方案应该适用于具有 N 列要取消透视的数据集,其中 N 很大(例如 100 列)。
【问题讨论】:
-
这能回答你的问题吗? Unpivot in spark-sql/pyspark
-
不,您链接的答案不适用于我在这里问的一般情况。
标签: scala apache-spark unpivot