• Pandas: как выполнить сложную группировку?

    @lloyd67 Автор вопроса
    Собственно я добился чего хотел, вот только как то длинно получилось, наверняка есть более элегантная запись:

    # считаем сумму duration для каждого дня месяца по каждому устройству (двойная группировка):
    data = df.groupby([pd.Grouper(key='date_start', freq='D'), 'device']).agg({'duration': 'sum'})
    
    # из этой выборки оставляем только сумму duration более 30 минут в день, и считаем кол-во таких дней по каждому device:
    new_data = data[data['duration'] > timedelta(minutes=30)].groupby('device').count().reset_index().rename(columns={'duration': 'days'})
    
    # из результата берем только те device у которых кол-во дней >= 5 и считаем их кол-во:
    print new_data[new_data['days'] >= 5]['device'].count()
    Ответ написан
    Комментировать