Хочу перевести все долгие вычисления с SQL на Pandas в проекте.
Есть таблица сеансов устройств (DEVICE (int), DURATION (timedelta), DATE (datetime))
Необходимо посчитать кол-во DEVICE которые имели продолжительность DURATION суммарно 30 минут в день, не менее 5 дней в месяц. (Для каждого месяца считается отдельно)
То есть на SQL это выглядит примерно так:
SELECT COUNT(1) FROM (
SELECT COUNT(1) as count
FROM (
SELECT device_id
FROM statistic
WHERE YEAR(`date`) = 2019 AND MONTH(`date`) = 1
GROUP BY device_id, DAY(`date`)
HAVING SUM(duration)) > 60 * 30
) as t
GROUP BY device_id HAVING count <= 5
) as w
Как такое провернуть на Pandas ?
Думаю надо сгруппировать по дням месяца и использовать filter
df[df['date'].between(datetime(2019, 1, 1), datetime(2019, 1, 31))].groupby(pd.Grouper(key='date', freq='D')).filter(lambda x: x['duration'].sum() > timedelta(minutes=30))
Но что делать дальше?