如何找到最小距离.. 当两点属于相同距离时
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..
您可以使用groupby
和max
功能。
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")
我有一个 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..
您可以使用groupby
和max
功能。
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")