Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找数据帧中数值最接近的行_Python_Pandas_Dataframe - Fatal编程技术网

Python 查找数据帧中数值最接近的行

Python 查找数据帧中数值最接近的行,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个包含以下假设数据的熊猫数据框架: ID Time X-coord Y-coord 0 1 5 68 5 1 2 8 72 78 2 3 1 15 23 3 4 4 81 59 4 5 9 78 99 5 6

我有一个包含以下假设数据的熊猫数据框架:

   ID    Time        X-coord      Y-coord
0  1      5          68          5
1  2      8          72          78 
2  3      1          15          23 
3  4      4          81          59 
4  5      9          78          99 
5  6     12          55          12 
6  7      5          85          14 
7  8      7          58          17 
8  9     13          91          47 
9  10    10          29          87 
对于每一行(或ID),我希望找到在这个数据帧中时间和空间(X&Y)上最接近的ID。奖励:时间应该优先于XY。 理想情况下,最后我希望有一个名为“最近的_ID”的新列,其中包含数据帧中最接近的ID

我很难想出这个函数

我真的很感激任何能给我指明正确方向的帮助或暗示


非常感谢

让我们将
df
表示为我们的数据帧。然后,您可以执行以下操作:

from sklearn.metrics import pairwise_distances

space_vals = df[['X-coord', 'Y-coord']]
time_vals =df['Time']
space_distance = pairwise_distance(space_vals)
time_distance = pairwise_distance(time_vals)

space_distance[space_distance == 0] = 1e9 # arbitrary large number
time_distance[time_distance == 0] = 1e9 # again

closest_space_id = np.argmin(space_distance, axis=0)
closest_time_id = np.argmin(time_distance, axis=0)
然后,您可以将最后两个结果存储在两列中,或者以某种方式决定哪一个更接近


注意:此代码尚未检查,可能有一些错误…

如何定义最近距离?我认为问题没有很好地定义-假设ID2在时间上最接近ID1,但ID3在空间上最接近。哪一个应该在最近的_ID列上?请提供预期的输出时间应该具有最高优先级,然后“按XY排序”。我可能需要先对数据进行标准化,这样我就可以用百分比计算距离了……它并没有按原样运行,但它为我指明了正确的方向,谢谢!一旦我弄明白了,我会更新的!