pyspark:按ID计算连续差

时间:2018-12-17 08:17:43

标签: pyspark

我的问题与Difference between two consecutive rows by ID完全相同,只是针对pyspark。

我有一个数据框

ID value
1  2
1 3
1 5
2 4
2 9

我想基于lag计算value的{​​{1}},所以:

ID

1 个答案:

答案 0 :(得分:1)

您可以使用Window函数来计算差异,如sql

>>> df.show()
+---+-----+
| id|value|
+---+-----+
|  1|    2|
|  1|    3|
|  1|    5|
|  2|    4|
|  2|    9|
+---+-----+

>>> from pyspark.sql import Window
>>> cnd = F.col('value') - F.lag('value').over(w)
>>> df.select('id',cnd.name('value_lag')).dropna().show()
+---+---------+
| id|value_lag|
+---+---------+
|  1|        1|
|  1|        2|
|  2|        5|
+---+---------+