Допустим, у нас есть
|bin | min | end | start |
|1 | 5 | 10 |
|2 | 12 | 24 |
|3 | 28 | 36 |
|4 | 40 | 50 |
|5 | null| null |
Я бы хотел заполнить start как end предыдущего столбца, чтобы получить значения непрерывного бина.Для пропавших я хотел бы заполнить текущие мин вместо.Что касается нулевой строки, я рассматриваю ее отдельно.
То, что дает нам лаг, будет
df.withColumn("start", F.lag(col("end"), 1, ***default_value***).over(orderBy(col("bin"))
|bin | min | end | start |
|1 | 5 | 10 | (5 wanted)
|2 | 12 | 24 | 10
|3 | 28 | 36 | 24
|4 | 40 | 50 | 36
|5 | null| null | null
Мои вопросы:
1 / Что мы вставим в default_value для задержки, чтобы взять другой столбец текущей строки, в этом случае min
2 / Есть ли способ обработать пустую строку в то же время безотделяя?Я намерен отфильтровать ненулевое значение, выполнить задержку, а затем объединить с пустыми строками.Как будет отличаться ответ, если Null является первым (ячейка 1) или последним (ячейка 5)?