我正在尝试打开此火花数据框:
ID STATUS COUNT
a 1 3
a 2 2
b 2 4
c 3 5
d 1 3
d 2 3
对此:
+---+---+---+---+
| ID| 1| 2| 3|
+---+---+---+---+
| a| 3| 2| 0|
| b| 0| 4| 0|
| c| 0| 0| 5|
| d| 3| 3| 0|
+---+---+---+---+
对此我还比较陌生,我想做一些类似的事情:
df.withColumnRenamed("1", udf_sum_val1)
.withColumnRenamed("2", udf_sum_val2)
.withColumnRenamed("2", udf_sum_val3)
然后进行groupBy,并对所有值求和。
然后执行某种groupBys,但这并不正确。我想知道是否有人可以采用更好的方法?
答案 0 :(得分:3)
不确定要执行的操作(您的示例尚不清楚),但这听起来像是枢轴操作:
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|
+---+---+---+---+