我有一个如下数据框:
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")))
答案 0 :(得分:1)
import org.apache.spark.sql.expressions.Window
val df2 = df1.select("group", "value", $"value" - lead("value").over(Window.partitionBy("group").orderBy("value")))
我猜您正在尝试按顺序减去两个相邻的值。
答案 1 :(得分:1)
这对我有用。
val df2 = df1.groupBy("Group").agg(first("Value").minus(last(col("Value"))))
您可以建议任何其他替代解决方案。预先感谢