考虑以下熊猫数据框:
print(df)
Id X Y Type X of Closest Y of Closest
0 201 73.91 34.84 A NaN NaN
1 201 74.67 32.64 A NaN NaN
2 201 74.00 33.20 A NaN NaN
3 201 71.46 27.70 A NaN NaN
4 201 69.32 35.42 A NaN NaN
5 201 75.06 24.00 B NaN NaN
6 201 74.11 16.64 B NaN NaN
7 201 73.37 18.73 B NaN NaN
8 201 56.63 26.90 B NaN NaN
9 201 73.35 38.83 B NaN NaN
10 512 74.15 28.90 A NaN NaN
11 512 75.82 17.56 A NaN NaN
12 512 74.78 33.21 A NaN NaN
13 512 75.43 32.41 A NaN NaN
14 512 75.90 25.12 A NaN NaN
15 512 79.76 29.49 B NaN NaN
16 512 76.47 36.91 B NaN NaN
17 512 74.70 19.19 B NaN NaN
18 512 78.75 30.53 B NaN NaN
19 512 74.60 31.88 B NaN NaN
请注意,对于每个ID,总有10行,其中A类型为5行,B类型为5行。
我想创建2列,“ X of Closest”和“ Y of Closest”。我的意思是说,X,Y对(每个ID的类型相反)是最短的欧氏距离。
第一行的示例:(B型)最接近(73.91,34.84)的对是(73.35,38.83)对-欧氏距离为4.03。
一种(可能的!?)方法是构造10列-每个ID中点之间的欧式距离,然后从相反的Type中选择最小欧式距离。我敢肯定,会有更快的方法。