Используя PySpark, я ищу способ заполнения столбца Status
на основе значений в столбце Code
. Df упорядочен по столбцу ID
.
Единственными значительными Code
значениями являются A (Good), B (Bad), C (Neutral)
.
Когда появляется одно из этих значений, я бы хотел, чтобы каждая последующая строка имела одно и то же значение Status
до тех пор, пока не появятся другие значимые значения Code
.
Это желаемый вывод df с добавленным столбцом Status
:
+----+------+---------+
| ID | Code | Status |
+----+------+---------+
| 1 | A | Good |
| 2 | 1x4 | Good |
| 3 | B | Bad |
| 4 | ytyt | Bad |
| 5 | zix8 | Bad |
| 6 | C | Neutral |
| 7 | 44d | Neutral |
| 8 | A | Good |
+----+------+---------+
Я не уверен, как решить эту проблему, я нашел этот вопрос, но я не знаю, можно ли адаптировать ответ к моим потребностям:
PySpark Когда элемент в списке
Я думал об использовании функции задержки, но число строк между A, B and C
строками нерегулярно, поэтому я не знаю, как это кусать.
Вот df для воспроизводимости:
df = sqlCtx.createDataFrame(
[
(1, A),
(2, 1x4),
(3, B),
(4, ytyt),
(5, zix8),
(6, C),
(7, 44d),
(8, A)
],
('ID', 'Code')
)