【发布时间】:2019-01-21 11:36:07
【问题描述】:
我正在尝试在 Python 中创建一个 Gale-Shapley 算法,以提供医生和医院的稳定匹配。为此,我给每个医生和每个医院一个随机的偏好,用一个数字表示。
由偏好组成的数据框
之后,我创建了一个函数,该函数为每个医院的一位特定医生(由 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)的结果应该足够了。
标签: python pandas function loops dataframe