Я хочу выбрать записи, за которыми (не обязательно сразу) следует событие 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
В более общем плане, есть ли у кого-нибудь хорошие указатели на соответствующую ментальную модель перевода из (разделение по порядку по строкам / диапазон между и ) синтаксису 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
Мобильная версия