【问题标题】:How to find the distance between two points given longitude and latitude in python-error?如何在python-error中找到给定经度和纬度的两点之间的距离?
【发布时间】:2019-07-12 09:37:30
【问题描述】:

我有两个给定经度和纬度的位置,我想在 python 中获取这些点之间的距离。我的数据集如下所示:

df_TEST = pd.DataFrame({'Location': ['X'],
                     'Long': [ 28.63615701706],
                     'Lat': [ 41.0693487044612],
                     'Location1': ['Y'],
                     'Long1': [30.7158891385255],
                     'Lat1': [36.963486025471]})  

我建议的解决方案Getting distance between two points based on latitude/longitude

 df_TEST['distance']=geopy.distance.geodesic(( df_TEST['Long'], 
 df_TEST['Lat']),(df_TEST['Long1'], df_TEST['Lat1'])).km

我的错误如下,请告诉我如何解决此问题。谢谢。

ValueError: The truth value of a Series is ambiguous. Use a.empty, 
a.bool(), a.item(), a.any() or a.all().

【问题讨论】:

    标签: python distance latitude-longitude


    【解决方案1】:

    正如在Documentation 中看到的那样,它接受浮点元组而不是您在这里尝试执行的熊猫系列元组,请尝试以下操作:

    df_TEST['distance']=geopy.distance.geodesic(( float(df_TEST['Long']), 
     float(df_TEST['Lat'])),(float(df_TEST['Long1']), float(df_TEST['Lat1']))).km
    

    【讨论】:

    • (float) 中的 () 充其量是不必要的。
    • 我不确定在 Series 对象上调用 float() 是否有效。据我所知,它不会重载 __float__ 方法。
    • 是的,它肯定会起作用,因为在这种情况下,该系列的每一列只有一个元素,大约 (float) - 我最近使用的是 Java ;) 所以我的错误是我现在更新了答案@ mkrieger1
    • df_TEST = pd.DataFrame({'Location': ['X1','X2'], 'Long': [28.63615701706,76], 'Lat': [41.0693487044612,54], ' Location1': ['Y1','Y2'], 'Long1': [30.7158891385255,65], 'Lat1': [36.963486025471,45]}) 在这种情况下它不起作用
    • 那么应该是float(df_TEST['Long'][0])
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多