У меня есть фрейм данных, где значение label
связано с (id, bin, date, hour)
:
+----------+----+-----+---+-------------------+
| date|hour| id|bin| label|
+----------+----+-----+---+-------------------+
|2019_12_20| 8| 1| 0| 151.7050821002368|
|2019_12_20| 8| 1| 2| 101.13672140015788|
|2019_12_20| 8| 1| 3| 16.856120233359647|
...
Я хочу добавить несколько столбцов к этому фрейму данных, соответствующих label
, в один и тот же час на предыдущий день, час go предыдущего дня и др. c. Я знаю, как получить первое с помощью функции задержки:
val dateWindow = Window.partitionBy($"id", $"bin").orderBy($"hour", $"date")
val expandedDf = data.withColumn("yesterdaySameHour", lag($"label", 1, 0.0).over(dateWindow))
Однако я не могу понять, как получить значение label
при hour - 1
в предыдущий день. Есть ли способ получить условную задержку, когда я могу отфильтровать hour
, который больше или равен часу текущей строки? Если нет, то как правильно это сделать?
Большое спасибо.