我有一个数据框,它为每一行显示一个人对(name_1和name_2)以及相应的分数。分数是一个数值,表示这两个人在一起的配合程度。分数越高,人1(name_1)和人2(name_2)之间的匹配就越好。你知道吗
如你所见,有些名字可以找到两次或更多。当然,一个人只能配一次。我的目标是,在数据帧中找到尽可能多的对,并将它们写入第二个数据帧。你知道吗
让我挣扎的问题是:
我想我最多可以从数据帧中得到8对,因为我在第一列中有8个不同的名称。不幸的是,最佳比赛的分数并没有明确区分。一个人可以匹配多个人,而其他人只能匹配一个特定的人。我对匹配的分数不太感兴趣。我有兴趣不失去任何人,因为一对组合的错误选择。你知道吗
我正在寻找一种方法来查找和提取尽可能多的数据帧对。你知道吗
这是数据帧df:
name_1 name_2 score
27 allen jolly 1.8
23 anna rock 2.8
22 anna christina 1.1
26 christina rock 2.3
24 christina allen 1.4
25 christina jolly 1.4
18 emily rock 3.7
15 emily sabastein 3.3
16 emily anna 2.5
17 emily christina 2.4
4 jacob jolly 3.4
1 jacob rick 2.9
3 jacob allen 2.4
0 jacob mary 2.3
2 jacob christina 2.0
7 mary jolly 1.7
5 mary rick 1.4
6 mary christina 1.3
14 rick rock 2.8
9 rick sabastein 2.8
8 rick emily 2.5
13 rick jolly 2.3
11 rick christina 2.1
10 rick anna 2.0
12 rick allen 1.5
21 sabastein rock 3.6
19 sabastein anna 2.8
20 sabastein christina 1.9
我认为从总分来看,最好的匹配是:
emely rock 3.7
jacob jolly 3.4
sabastein anna 2.8
rick allen 1.5
mary christina 1.3
我不确定这是否也是我能得到的最大对数。如果你知道如何得到最好的对(见上文)或对的最大数量,我真的很高兴看到。你知道吗
编辑 与此同时,我发现了一个非常方便的函数,可以从数据帧创建一个图,但是您应该将列
score
重命名为weight
:你可以简单地写下:
就这样。
(Rest仍然是我们下面讨论的一部分,您如何进一步处理结果。。。)
我的方法是
结果:
文档来源:
为了设置图表,您已经有了正确的链接。
有关
maximum_matching
函数,请参见此处https://networkx.github.io/documentation/networkx-1.10/reference/generated/networkx.algorithms.matching.max_weight_matching.html#networkx.algorithms.matching.max_weight_matching相关问题 更多 >
编程相关推荐