У меня есть датафрейм следующим образом. Следующее предназначено только для 1 пациента и 1 конкретного теста. Он может иметь несколько других тестов с похожим видом.
ptid,blast_date,test_name,result_date,test_result,date_diff
PT381201021,2019-08-22,Albumin,2019-08-14,4.3,8
PT381201021,2019-05-17,Albumin,NA,NA,0
PT381201021,2019-05-18,Albumin,NA,NA,0
PT381201021,2019-05-21,Albumin,NA,NA,0
PT381201021,2019-05-23,Albumin,NA,NA,0
PT381201021,2019-05-16,Albumin,NA,NA,0
PT381201021,2019-05-19,Albumin,NA,NA,0
PT381201021,2019-05-22,Albumin,NA,NA,0
PT381201021,2019-05-20,Albumin,NA,NA,0
Я хочу, чтобы result_date, test_result для "Albumin" в этом случае был заполнен из предыдущего blast_date, если он находится ниже определенного порога, давайте предположим, что в этом случае 3 месяца. Поэтому я хочу, чтобы следующая строка была заполнена следующим образом:
PT381201021,2019-05-23,Albumin,2019-08-14,4.3,0
Вы можете оставить столбец date_diff без изменений.
Итак, окончательный кадр данных ожидается следующим образом: -
ptid,blast_date,test_name,result_date,test_result,date_diff
PT381201021,2019-08-22,Albumin,2019-08-14,4.3,8
PT381201021,2019-05-17,Albumin,NA,NA,0
PT381201021,2019-05-18,Albumin,NA,NA,0
PT381201021,2019-05-21,Albumin,NA,NA,0
PT381201021,2019-05-23,Albumin,2019-08-14,4.3,0
PT381201021,2019-05-16,Albumin,NA,NA,0
PT381201021,2019-05-19,Albumin,NA,NA,0
PT381201021,2019-05-22,Albumin,NA,NA,0
PT381201021,2019-05-20,Albumin,NA,NA,0
Я пытался использовать функцию задержки, но у меня возникли некоторые трудности. В поисках pyspark способа решить эту проблему.