我的问题与Difference between two consecutive rows by ID完全相同,只是针对pyspark。
我有一个数据框
ID value
1 2
1 3
1 5
2 4
2 9
我想基于lag
计算value
的{{1}},所以:
ID
答案 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|
+---+---------+