PySpark — связывание строк с другими строками для фильтрации

Как в PySpark связать данные в одной строке с другой строкой, а затем отфильтровать на основе этого?

Упрощенный пример,

У меня есть кадр данных pyspark с 9 строками данных в день, и у меня много дней данных, в приведенном ниже примере я даю 2 дня, 18 строк данных.

У меня есть сосуд под давлением, который автоматически наполняется 3 раза в день. Во-первых, мне нужно конечное конечное давление для первого экземпляра, где данные действительны, а во-вторых, чтобы отфильтровать все строки, где это значение превышает пороговое значение, 3000 фунтов на квадратный дюйм. В некоторых случаях данные действительны дважды в день, но я хочу, чтобы конечное давление соответствовало только первому действительному экземпляру.

Датафрейм:

Sep_3_2022, p_01_start, 26:00

Sep_3_2022, p_01_end, 31:00

3 сентября 2022 г., p_02_start, 27:00

Sep_3_2022, p_02_end, 29:00

Sep_3_2022, p_03_start, 27:00

Sep_3_2022, p_03_end, 3050

Sep_3_2022, p_01_validity, False

Sep_3_2022, p_02_validity, правда

Sep_3_2022, p_03_validity, правда

4 сентября 2022 г., p_01_start, 26:00

04.09.2022, p_01_end, 31:00

Sep_4_2022, p_02_start, 27:00

4 сентября 2022 г., стр_02_конец, 3050 г.

4 сентября 2022 г., p_03_start, 27:00

Сентябрь_4_2022, стр_03_конец, 3050

Sep_4_2022, p_01_validity, правда

Sep_4_2022, p_02_validity, правда

Sep_4_2022, p_03_validity, False


Желаемый результат 1 (первые достоверные данные дня):

3 сентября 2022 г., p_02_start, 27:00

Sep_3_2022, p_02_end, 29:00

Sep_3_2022, p_02_validity, правда

4 сентября 2022 г., p_01_start, 26:00

04.09.2022, p_01_end, 31:00

Sep_4_2022, p_01_validity, правда


Желаемый результат 2 (первые достоверные данные дня, выше порога, только конечное давление):

04.09.2022, p_01_end, 31:00


Я рассматривал возможность использования substring() для определения частей строк 01, 02, чтобы связать их друг с другом, но как пойти дальше, я не знаю.

Спасибо за любые предложения

0 ответов

Другие вопросы по тегам