Не уверен, что вы хотите сделать (ваш пример несколько неясен), но это звучит как поворот:
val df = Seq(
("a", 1, 3),
("a", 2, 2),
("b", 2, 4),
("c", 3, 5),
("d", 1, 3),
("d", 2, 3)
).toDF("ID", "STATUS", "COUNT")
df
.groupBy($"ID")
.pivot("STATUS")
.agg(sum($"COUNT"))
.na.fill(0)
.orderBy($"ID")
.show()
+---+---+---+---+
| ID| 1| 2| 3|
+---+---+---+---+
| a| 3| 2| 0|
| b| 0| 4| 0|
| c| 0| 0| 5|
| d| 3| 3| 0|
+---+---+---+---+