我有一组对象和它们在不同时间的位置。我想要得到每个汽车与其最近邻之间的距离,并计算每个时间点的平均值。以下是一个示例数据框:
time = [0, 0, 0, 1, 1, 2, 2]
x = [216, 218, 217, 280, 290, 130, 132]
y = [13, 12, 12, 110, 109, 3, 56]
car = [1, 2, 3, 1, 3, 4, 5]
df = pd.DataFrame({'time': time, 'x': x, 'y': y, 'car': car})
df
x y car
time
0 216 13 1
0 218 12 2
0 217 12 3
1 280 110 1
1 290 109 3
2 130 3 4
2 132 56 5
对于每个时间点,我想知道每辆汽车的最近邻居是谁。例如:
df2
car nearest_neighbour euclidean_distance
time
0 1 3 1.41
0 2 3 1.00
0 3 1 1.41
1 1 3 10.05
1 3 1 10.05
2 4 5 53.04
2 5 4 53.04
我知道我可以从如何在pandas数据框中应用欧几里得距离函数到groupby对象中计算车辆之间的两两距离,但是我该如何获得每辆车的最近邻居呢?
之后,使用groupby获取每帧的距离平均值似乎很简单,但第二步真正让我困惑。感谢您的帮助!