透视火花数据帧总数

时间:2017-05-22 15:57:14

标签: scala apache-spark spark-dataframe

我有以下数据框:

|id|year|
|--|----|
|a |2015|
|a |2016|
|a |2017|
|b |2015|
|b |2017|

我可以通过它来获取:

|id|2015|2016|2017|
|--|----|----|----|
|a |  1 |  1 |  1 |
|b |  1 |  0 |  1 |

使用:

val result = data.groupBy("id").pivot("year").count().na.fill(0)

我想添加一个总列(所有年份的总和)。得到这个的最有效方法是什么?

|id|2015|2016|2017|Total|
|--|----|----|----|-----|
|a |  1 |  1 |  1 |   3 |
|b |  1 |  0 |  1 |   2 |

我目前采用上述结果并总结年份列。

val columnsToSum = result.columns.filterNot(c=> Seq("id").contains(c))
result.withColumn("Total", columnsToSum.map(col(_)).reduce(_ + _))

有没有更好的方法(内置功能)?

0 个答案:

没有答案