Сгруппировать и вычесть Spark Scala - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть датафрейм, как показано ниже:

group value
B      2
B      3
A      5
A      6

Теперь мне нужно вычесть строки на основе группы.т.е. 2-3 и 5-6.после преобразования это должно выглядеть следующим образом.

group value
B      -1
A      -1

Я попробовал приведенный ниже код, но не смог решить мой случай.

val df2 = df1.groupBy("Group").agg(first("Value")-second(col("Value")))

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Это работает для меня.

val df2 = df1.groupBy("Group").agg(first("Value").minus(last(col("Value"))))

Вы можете предложить любые другие альтернативные решения.Заранее спасибо

0 голосов
/ 13 февраля 2019
import org.apache.spark.sql.expressions.Window

val df2 = df1.select("group", "value", $"value" - lead("value").over(Window.partitionBy("group").orderBy("value")))

Полагаю, вы пытаетесь вычесть два соседних значения с порядком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...