如何在scala中对dataframe列进行操作

时间:2018-07-11 13:02:20

标签: scala apache-spark dataframe rdd

Job将创建一个新列,其中的年份之间的差异类似于2002年数据-2001年数据

输入:

+----+-------------------+
|col1|col2               |
+----+-------------------+
|2001 |10.              |
|2002 |15.              |
|2003 |19.              |
+----+-------------------+

输出:

+----+-------------------+
|col1|col2   |col3   |
+----+-------------------+
|2001 |10.  |     0     |
|2002 |15.  |     5     |
|2003 |19.  |     4     |
+----+-------------------+

1 个答案:

答案 0 :(得分:0)

尝试一下,

import org.apache.spark.sql.functions.{lag, _}

val yearCol = org.apache.spark.sql.expressions.Window.orderBy("col1")
result.withColumn("lag",(col("col2") - (lag(col("col2"), 1).over(yearCol)))).show

如果需要,请处理第一个位置的空值。