Как создать последовательность в Pyspark, которая сбрасывается при изменении строк с 0 на 1 и и увеличивается, когда все равны 1

#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. Заранее спасибо