我正在尝试使用Python创建Gale-Shapley算法,以实现医生和医院之间的稳定匹配。为此,我给每个医生和每个医院分配了一个随机偏好,用数字表示。
偏好数据框架
以下是表格内容: 由医生偏好、评分和排名组成的数据框。 因此,医生1更喜欢第一个医院,因为它在排名中代表了所有其他医院。
现在,我想通过创建循环(为每个不同的医生创建两个新列并将它们添加到我的数据框中)来重复执行此函数,但我不知道该怎么做。我可以为所有10个不同的医生键入相同的函数,但如果我增加数据集以包括1000个医生和医院,这将变得不可能,必须有更好的方法...... 这将是医生2的相同功能:
偏好数据框架
接下来,我创建了一个函数,为每个医生(由ID表示)评估每个医院,并创建两个新列来排名此评级。在评估匹配时,我取偏好之间的差异的绝对值,其中较小的绝对值表示更好的匹配。这是第一个医生的公式:
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()
提前感谢您!
print(doctors_sorted_by_preference)
的结果应该足够了。 - asongtoruin