Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在没有do循环的情况下,如何求给定经纬度的两点之间的距离?_Python_Distance_Latitude Longitude - Fatal编程技术网

Python 在没有do循环的情况下,如何求给定经纬度的两点之间的距离?

Python 在没有do循环的情况下,如何求给定经纬度的两点之间的距离?,python,distance,latitude-longitude,Python,Distance,Latitude Longitude,我有两个给定经度和纬度的位置,我想用python获得这些点之间的距离。我的数据集如下所示: df_TEST = pd.DataFrame({'Location': ['X1','X2'], 'Long': [ 28.63615701706,76], 'Lat': [ 41.0693487044612,54], 'Location1': ['Y1','Y2'],

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

 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]}) 
我想用下面的代码在此数据框中添加一个新列,但它只适用于一行。我有一个巨大的数据集,我想添加这个列而不做循环。建议的解决方案 我该怎么做

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

您可以在数据帧上使用
apply()
函数,将函数应用于数据帧的每一行

代码如下:

def distance(row):
    return (geopy.distance.geodesic((row['Long'], row['Lat']), 
                                     row['Long1'], row['Lat1']).km)

df_TEST['distance']=df_TEST.apply(distance, axis=1)

您可以在数据帧上使用
apply()
函数,将函数应用于数据帧的每一行

代码如下:

def distance(row):
    return (geopy.distance.geodesic((row['Long'], row['Lat']), 
                                     row['Long1'], row['Lat1']).km)

df_TEST['distance']=df_TEST.apply(distance, axis=1)

我可能错过了一些东西,但是你呢

>>> df_TEST['distance_km'] = df_TEST.apply(
        lambda r: geopy.distance.geodesic(
            r.Long, r.Lat,  r.Long1, r.Lat1
        ).km,
        axis=1
    )
>>> df_TEST
  Location       Long        Lat Location1      Long1       Lat1  distance_km
0       X1  28.636157  41.069349        Y1  30.715889  36.963486  3221.113126
1       X2  76.000000  54.000000        Y2  65.000000  45.000000  5904.462593

我可能错过了一些东西,但是你呢

>>> df_TEST['distance_km'] = df_TEST.apply(
        lambda r: geopy.distance.geodesic(
            r.Long, r.Lat,  r.Long1, r.Lat1
        ).km,
        axis=1
    )
>>> df_TEST
  Location       Long        Lat Location1      Long1       Lat1  distance_km
0       X1  28.636157  41.069349        Y1  30.715889  36.963486  3221.113126
1       X2  76.000000  54.000000        Y2  65.000000  45.000000  5904.462593