我有一个像DF:列匹配基于第三列
Name id precision
0 John 1 1
1 John 1 2
2 John 2 3
3 Marc 1 3
4 Tom 2 1
这里的代码来生成它:
pd.DataFrame([{'Name': 'John', 'id': 1, 'precision': 1},
{'Name': 'John', 'id': 1, 'precision': 2},
{'Name': 'John','id': 2, 'precision': 3},
{'Name': 'Marc', 'id': 1, 'precision': 3},
{'Name': 'Tom', 'id': 2, 'precision': 1}])
我有不同的交易算法是剑招BTW名称和ID。每个算法在相应的列中都有自己的精度报告(越小越好)。最终我希望得到最好的匹配,如果有的话。
期望的结果是:
Name id precision
0 John 1 1
4 Tom 2 1
约翰应与1匹配,因为它是唯一一个匹配以1:1的精度(马克具有3一精度)。
汤姆应与2匹配,因为它是唯一一个匹配与1
精密的我,试图:
df['min'] = df.groupby('Name').precision.transform(min)
要找出最小,但我有在提取的烦恼那么期望的结果。
和'Marc'被删除?你能解释为什么吗? – jezrael
,因为一旦找到通信btw名称和ID是唯一的。在这种情况下,约翰得到id 1,因为他有更好的精度(1)。 Marc没有得到id 1,因为算法发现这种匹配可能具有最差的精确度(3) – user2320577
基本上用于一个名称我只有1个id并且对于1个id我可以只有1个名称 – user2320577