#python #pyspark #spark-notebook
Вопрос:
У меня есть фрейм данных pyspark, подобный этому, и мне нужен вывод SEQ, как показано на рисунке:
R_ID ORDER SC_ITEM seq
A 1 0
A 3 1 1
A 4 1 2
A 5 1 3
A 6 1 4
A 7 1 5
A 8 1 6
A 9 1 7
A 10 0 0
A 11 1 1
A 12 0 0
A 13 1
A 14 0
A 15 1 1
A 16 1 2
A 17 1 3
A 18 1 4
A 19 1 5
A 20 1 6
A 21 0 0
A 22 0 0
B 1 0 0
B 2 1 1
C 1 1 1
C 2 1 2
Не уверен, что данные отображаются правильно. Итак, прикрепленный рисунок :введите описание изображения здесь
Я сделал что-то вроде этого :
RN = Window().orderBy(lit('A'))
.when(((F.col("R_ID")==(lag(F.col("R_ID"),1).over(RN))) amp; (F.col("SC_ITEM")== 1)), (F.col("SC_ITEM") (lag(F.col("SEQ"),1).over(RN))))
Не уверен, смогу ли я опередить или отстать от графика. Пожалуйста, помогите, как это сделать
Комментарии:
1. Почему есть два пустых
seq
?2. Потому что таковы данные, и мы должны рассматривать их как 0
3. Я думал, что SEQ-это выход, а не вход? можете ли вы уточнить это в своем вопросе?
4. Да, вы правы. Я имел в виду, что в SC_ITEM могут быть пробелы. Для SEQ я не завершил вывод, но вы правы, он должен продолжаться как 1 0. Заранее спасибо