По скольку нет полного датафрейма я не могу полностью сформировать рабочий ответ. Но основываясь на вашем коде вот какая главная мысль.
Не каких for в pandas абсолютно любой функционал выполним без циклов. (либо напрямую) любой массив в pandas уже векторизован. либо посредством функций apply или agg (первая поэлементно выполнит вами написанную функцию) , вторая агрегирует, то есть на вход получит массив на выход одно число например (mean, std) и.т.д. Но главный вывод не каких циклов pandas устроен так что ты никогда не используешь циклы для обработки данных. (только для работы с индексами иногда применяют циклы), но никогда с данными. Это очень сильно ускорит код.