Я пытаюсь создать алгоритм Гейла-Шепли в Python, который обеспечивает стабильные совпадения врачей и больниц.Для этого я дал каждому врачу и каждой больнице случайное предпочтение, представленное числом.
Фрейм данных, состоящий из предпочтений

Впоследствии я создал функцию, которая оценивает каждую больницу на одного конкретного врача (представленного идентификатором) с последующимпутем ранжирования этого рейтинга создавая две новые колонки.При оценке соответствия я взял абсолютное значение разницы между предпочтениями, где более низкое абсолютное значение является лучшим соответствием.Это формула для первого доктора:
doctors_sorted_by_preference['Rating of Hospital by Doctor 1']=abs(doctors_sorted_by_preference['Preference Doctor'].iloc[0]-doctors_sorted_by_preference['Preference Hospital'])
doctors_sorted_by_preference['Rank of Hospital by Doctor 1']=doctors_sorted_by_preference["Rating of Hospital by Doctor 1"].rank()
, которая приводит к следующей таблице: План данных, состоящий из предпочтений и рейтинга + рейтинг доктора

Следовательно, доктор 1 предпочитает первую больницу всем остальным больницам, представленным в рейтинге.
Теперь я хочу повторить эту функцию для каждого отдельного доктора, создав цикл (создавая два новых столбца для каждого доктора и добавляя их в мой массив данных), но я не знаю, как это сделать.Я мог бы напечатать одну и ту же функцию для всех 10 разных врачей, но если я увеличу набор данных до 1000 врачей и больниц, это станет невозможным, должен быть лучший способ ... Это была бы та же функция для доктора 2:
doctors_sorted_by_preference['Rating of Hospital by Doctor 2']=abs(doctors_sorted_by_preference['Preference Doctor'].iloc[1]-doctors_sorted_by_preference['Preference Hospital'])
doctors_sorted_by_preference['Rank of Hospital by Doctor 2']=doctors_sorted_by_preference["Rating of Hospital by Doctor 2"].rank()
Заранее спасибо!