python - 在 Pandas DataFrame 中查找数字最接近的行

标签 python pandas dataframe

我有一个包含以下假设数据的 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     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。 理想情况下,最后我希望有一个名为“Closest_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)

然后,您可以将最后 2 个结果存储在 2 列中,或者以某种方式决定哪一个更接近。

注意:此代码尚未经过检查,并且可能存在一些错误...

关于python - 在 Pandas DataFrame 中查找数字最接近的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59951905/

相关文章:

python - 在python vaex中删除重复的行

python - www 域和 ip 地址的 django allowed_hosts 错误

Python 不返回任何 MySQL 结果

python - 如何找到当前 spark 上下文中加载的所有文本文件?

python - 如何在初始化时创建和存储类的实例?

python - Pandas hub_table 与 aggfunc 在不同数据上的工作方式有所不同

python - 如何在不使用 nan 的情况下保留唯一 ID 的同时对特定列求和

python - 使用 pandas 计算下一行的值作为前一行的函数

python - 从具有不同值和类型的一列创建新的数据框列

python - 根据最后一列和最后一行的总和查找前 5 个值