我有一個像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