pd.Grouper(key="ts", freq="M") (или level) группирует по времени без обязательного DatetimeIndex; комбинируется с другими ключами в одном groupby.
Разбор
- Удобно для отчётов «месяц × регион».
- Параметры closed/label как у resample.
- Сортировка времени перед группировкой желательна.
- Альтернатива — resample при одном ряде на index.
Итог
Grouper добавляет частотную ось времени в обычный groupby.