Как фильтровать данные последовательных событий в зависимости от того, сопровождается ли запись конкретным событием в теPython

Программы на Python
Anonymous
 Как фильтровать данные последовательных событий в зависимости от того, сопровождается ли запись конкретным событием в те

Сообщение Anonymous »

У меня есть некоторые данные со столбцом метки времени t, столбцом категории событий cat и столбцом user_id. cat может принимать n значений, включая значение A.
Я хочу выбрать записи, за которыми (не обязательно сразу) следует событие A в течение 5 минут (для того же пользователя).
В SQL я бы сделал следующее:

Код: Выделить всё

select
*
from self
qualify count_if(category = 'A') over (partition by user_id order by t
range between current row and interval '5 minutes' following) > 0
Как это сделать в Polars? (кроме переключения на метод .sql).
В более общем плане, есть ли у кого-нибудь хорошие указатели на соответствующую ментальную модель перевода из поверх (разделение по порядку по строкам / диапазон между и ) синтаксису SQL в Polars?
Я попробовал следующее:

Код: Выделить всё

df.filter(
pl.col('cat').any().over('user_id').rolling(
index_column='t',
period = '5m',
offset = '0m',
closed = 'both')
)
и его варианты, но получил ошибку «выражение окна не разрешено при агрегации».
Я также пробовал использовать .rolling непосредственно в DataFrame, но это приводит к агрегации, которая мне не нужна (я хочу сохранить структуру таблицы).>

Подробнее здесь: https://stackoverflow.com/questions/795 ... lowed-by-s

Вернуться в «Python»