Как фильтровать данные последовательных событий в зависимости от того, сопровождается ли запись конкретным событием в те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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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