【发布时间】:2021-02-16 04:50:19
【问题描述】:
我的数据框的第一行如下所示。列是经度、纬度和值。此数据框可扩展 3000 万行。
-179.979166666666657 89.9791666666666714 -3.39999995214436425e+38
-179.9375 89.9791666666666714 -3.39999995214436425e+38
-179.895833333333343 89.9791666666666714 -3.39999995214436425e+38
-179.854166666666657 89.9791666666666714 -3.39999995214436425e+38
-179.8125 89.9791666666666714 -3.39999995214436425e+38
-179.770833333333343 89.9791666666666714 -3.39999995214436425e+38
-179.729166666666657 89.9791666666666714 -3.39999995214436425e+38
-179.6875 89.9791666666666714 -3.39999995214436425e+38
-179.645833333333343 89.9791666666666714 -3.39999995214436425e+38
我试图找到与给定输入最近的经度和纬度点,然后打印出与最接近的经度和纬度相关的值。我曾尝试将数据框转换为数组,然后使用此算法搜索最小值:
def match (lon, lat):
min=10000
minindex=-1
for x in range (len (mintemparr)):
if (abs ((float (lon))-float (mintemparr [x][0])))+(abs ((float (lat))-float (mintemparr [x]
[1])))<min:
min=(abs ((float (lon))-float (mintemparr [x][0])))+(abs ((float (lat))-float
(mintemparr [x][1])))
minindex=x
result=mintemparr [minindex][2]
return result
但是,这非常慢。有没有更直接的方法可以在 pandas 中搜索最接近的值,而不是将其转换为数组。
提前致谢。
【问题讨论】:
-
您的数据框索引是经度还是纬度?如果没有,请考虑对它们进行索引。然后你应该能够搜索经度和纬度。那不行吗?