如何找到最小距离.. 当两点属于相同距离时

How to find the minimum distance .. when two points belongs to same distance

我有一个 dataframe 这样的:

A  B  
1 0.1 
1 0.2
1 0.3
2 0.2
2 0.5
2 0.3
3 0.8
3 0.6
3 0.1

如何找到属于每个点 1、2、3 的最小值并且应该没有冲突,这意味着点 1 和点 2 不应该属于同一个点 0.3..

您可以使用groupbymax功能。

df.groupby('A').B.max()

如果我没理解错的话,你想做两件事: - 找到每个不同 A 的最小值 B,以及 - 确保它们不会发生碰撞。你没有具体说明发生碰撞时该怎么做,所以我想你只是想知道是否有碰撞。

第一个可以通过 Rarblack 的回答来实现(尽管在你的情况下你应该使用 min 而不是 max)。 对于第二种,您可以使用 .nunique() 方法 - 查看有多少个唯一 B 值(应该与唯一 A 值的数量相同)

#setup dataframe
df = pd.DataFrame.from_dict({
    'A': [1,1,1,2,2,2,3,3,3],
    'B': [0.1,0.2,0.3,0.2,0.5,0.3,0.8,0.6,0.1]
})

# find minimum
x = df.groupby('A')['B'].min()

# assert that there are no collisions:
if not (x.nunique() == len(x)):
    print ("Conflicting values")