【问题标题】:Geopy calculate geodesic distance from two dataframesGeopy从两个数据帧计算测地线距离
【发布时间】:2021-08-03 19:53:29
【问题描述】:

我正在尝试使用 Geopy 从两个不同的 dfs 计算测地线距离。

我想从 df1(纬度、经度坐标的元组)向函数提供一个点,并让它计算 df2 中距该点的距离的新列。然后我希望它返回最小值。

到目前为止,这是我所拥有的:

df1 和 df2 都包含一个名为 [lat_lon] 的列,它是一个坐标元组。

from geopy.distance import geodesic

def get_distance(point, df2): 
    df2['dist'] = df2.apply(geodesic(point, df2['lat_lon']).miles)
    closest = df2.loc[df2['dist'].idxmin()]
    return closest

然后我想将此应用于 df1,以便使用最接近的值创建一个新列。

df1['closest_location'] = df1['lat_lon'].apply(lambda x: get_distance(x, df2))

运行最后一行时出现此错误:

ValueError: When creating a Point from sequence, it must not have more than 3 items.

我想我在这里迷失了。

【问题讨论】:

    标签: python python-3.x pandas geopy


    【解决方案1】:

    您将整个df2 传递给geodesic,但它只需要单个元组作为输入。要解决它,您也可以在函数中包含一个 lambda:

    def get_distance(point, df2): 
        dists = df2['lat_lon'].apply(lambda x: geodesic(point, x).miles)
        closest = df2.loc[dists.idxmin()]
        return closest
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      • 2016-03-15
      • 2021-01-02
      • 2017-04-11
      • 1970-01-01
      • 2018-10-20
      相关资源
      最近更新 更多