如何计算当前行与下一行?
Posted
技术标签:
【中文标题】如何计算当前行与下一行?【英文标题】:How to calculate the current row with the next one? 【发布时间】:2017-06-06 12:27:46 【问题描述】:在 Spark-Sql 1.6 版中,使用DataFrame
s,有没有办法为特定列计算每一行的当前行和下一行的总和?
例如,如果我有一个包含一列的表格,就像这样
Age
12
23
31
67
我想要以下输出
Sum
35
54
98
最后一行被删除,因为它没有要添加的“下一行”。
现在我正在通过对表格进行排名并将其与自身连接起来,其中rank
等于rank+1
。
有没有更好的方法来做到这一点?
这可以通过Window
函数完成吗?
【问题讨论】:
【参考方案1】:是的,您绝对可以使用rowsBetween
函数来处理Window
函数。在下面的示例中,我使用了person
列作为grouping
的用途。
import sqlContext.implicits._
import org.apache.spark.sql.functions._
val dataframe = Seq(
("A",12),
("A",23),
("A",31),
("A",67)
).toDF("person", "Age")
val windowSpec = Window.partitionBy("person").orderBy("Age").rowsBetween(0, 1)
val newDF = dataframe.withColumn("sum", sum(dataframe("Age")) over(windowSpec))
newDF.filter(!(newDF("Age") === newDF("sum"))).show
【讨论】:
改用Window.currentRow
谢谢。你能不能也看看this question?以上是关于如何计算当前行与下一行?的主要内容,如果未能解决你的问题,请参考以下文章
使用Python Dataframe将行与下一行进行比较并从结果中创建一个新列?