текущий df:
df = spark.createDataFrame([
("2020-01-12","d1",0),
("2020-01-12","d2",0),
("2020-01-13","d3",0),
("2020-01-14","d4",1),
("2020-01-15","d5",0),
("2020-01-15","d6",0),
("2020-01-16","d7",0),
("2020-01-17","d8",0),
("2020-01-18","d9",1),
("2020-01-19","d10",0),
("2020-01-20","d11",0),],
['date', 'device', 'condition'])
df.show()
+----------+------+---------+
| date|device|condition|
+----------+------+---------+
|2020-01-12| d1| 0|
|2020-01-12| d2| 0|
|2020-01-13| d3| 0|
|2020-01-14| d4| 1|
|2020-01-15| d5| 0|
|2020-01-15| d6| 0|
|2020-01-16| d7| 0|
|2020-01-17| d8| 0|
|2020-01-18| d9| 1|
|2020-01-19| d10| 0|
|2020-01-20| d11| 0|
+----------+------+---------+
желаемый вывод df:
want_df = spark.createDataFrame([
("2020-01-12","d1",0,0),
("2020-01-12","d2",0,0),
("2020-01-13","d3",0,1),
("2020-01-14","d4",1,2),
("2020-01-15","d5",0,1),
("2020-01-15","d6",0,1),
("2020-01-16","d7",0,2),
("2020-01-17","d8",0,3),
("2020-01-18","d9",1,4),
("2020-01-19","d10",0,1),
("2020-01-20","d11",0,2),],
['date', 'device', 'condition', 'life'])
want_df.show()
+----------+------+---------+----+
| date|device|condition|life|
+----------+------+---------+----+
|2020-01-12| d1| 0| 0|
|2020-01-12| d2| 0| 0|
|2020-01-13| d3| 0| 1|
|2020-01-14| d4| 1| 2|
|2020-01-15| d5| 0| 1|
|2020-01-15| d6| 0| 1|
|2020-01-16| d7| 0| 2|
|2020-01-17| d8| 0| 3|
|2020-01-18| d9| 1| 4|
|2020-01-19| d10| 0| 1|
|2020-01-20| d11| 0| 2|
+----------+------+---------+----+
Цель состоит в том, чтобы вычислить разницу в дате (# дней) до даты, когда condition=1
затем дата разница сбрасывается на количество дней, начиная с момента выполнения последнего условия. life
- столбец, который пытается вычислить. Есть идеи, как рассчитать это? Window
или lag
?