对于Python中的大型数据集,如何使用经度和纬度查找最近的位置?

对于Python中的大型数据集,如何使用经度和纬度查找最近的位置?,python,loops,scipy,latitude-longitude,large-data,Python,Loops,Scipy,Latitude Longitude,Large Data,我有一个熊猫数据框,包含500.000(!)行(位置)和两列: 经度 纬度 现在我想要第三列: 最近的位置 此列应告诉我哪一行/位置距离“当前”行/位置最近 我知道您可以使用scipy.spatial.distance中的cdist等工具找到两个lon/lat之间的距离。但是,这需要花费太多时间,因为它必须在数据集中循环500.000*500.000次(因为它试图找到每个位置到每个位置的距离) 有人知道如何处理这个问题吗?在谷歌上查找“空间数据排序”之类的内容。这超出了范围,但肯定是一个

我有一个熊猫数据框,包含500.000(!)行(位置)和两列:

  • 经度
  • 纬度
现在我想要第三列:

  • 最近的位置
此列应告诉我哪一行/位置距离“当前”行/位置最近

我知道您可以使用
scipy.spatial.distance
中的
cdist
等工具找到两个lon/lat之间的距离。但是,这需要花费太多时间,因为它必须在数据集中循环500.000*500.000次(因为它试图找到每个位置到每个位置的距离)


有人知道如何处理这个问题吗?

在谷歌上查找“空间数据排序”之类的内容。这超出了范围,但肯定是一个值得和有趣的主题。为什么它需要是500000*500000?您不是在试图找到从这500000个位置到某个参考位置的最近位置吗?是的,因此如果您试图找到一个位置的最近位置,您需要在数据集中循环500.000次。但是,我需要对数据集中的每个位置执行此操作。那么:500.000*500.000?这能回答你的问题吗?我知道链接也会很慢,但这是我所知道的最好的确定方法。除此之外,我不确定能否在SO的范围内回答这个问题