Да, row функция, но понял что это не решит проблему. Не прочитал первое сообщение с условием. Как по мне отдельный df с данными медиан категорий, которыми нужно заполнять - нормальное решение.
А дальше посмотреть по производительности либо merge, либо передать в функцию df медианами категорий. Опять же отбирая только нужные строки что бы не тратить ресурсы на заполненные.