Ваша спецификация окна должна быть изменена, чтобы включить все предыдущие строки в раздел и взять счетчик с соответствующими значениями свойств.Попробуйте это
import pyspark.sql.functions as f
from pyspark.sql.window import Window
data = [(1, 1,1),(1, 2,0),(1, 3,1),(1, 4,1),(2,1 , 0),(2, 2, 0),(2, 3, 1)]
df = spark.createDataFrame(data,['class','classID','Property'])
windowSpec = Window().partitionBy('class').orderBy('classID').rowsBetween(Window.unboundedPreceding, Window.currentRow)
df = df.withColumn('relevantCount',f.count(f.when(f.col('Property') == 1, f.col('Property'))).over(windowSpec))
df.show()
Результат>
+-----+-------+--------+-------------+
|class|classID|Property|relevantCount|
+-----+-------+--------+-------------+
| 1| 1| 1| 1|
| 1| 2| 0| 1|
| 1| 3| 1| 2|
| 1| 4| 1| 3|
| 2| 1| 0| 0|
| 2| 2| 0| 0|
| 2| 3| 1| 1|
+-----+-------+--------+-------------+