将函数应用于列表和数据框
Applying a Function to a List and a Dataframe
我有一对经度和纬度坐标,它们将被输入到函数中以求出它与第二对坐标之间的距离
例如:
lat_string1 = 48.167
long_string1 = -99.648
lat_string2 = 48.25606
long_string2 = -103.31802
使用 Haversine Distance 函数我可以找到这两个坐标之间的距离。
def dist(lat1, long1, lat2, long2):
# convert decimal degrees to radians
lat1, long1, lat2, long2 = map(radians, [lat1, long1, lat2, long2])
# haversine formula
dlon = long2 - long1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a))
# Radius of earth in kilometers is 6371
km = 6371* c
return km
print(dist(lat_string1, long_string1, lat_string2, long_string2))
272.09670525744474
如何将此函数应用于 lat_string1
和 long_string1
以及包含 1,000(或下面示例 df 中的三个)坐标对的 coordinates_df
,以便它可以打印A、B 和 C 的每个距离?
lat_string1 = 48.167
long_string1 = -99.648
coordinates_df = pd.DataFrame({'Name':['A', 'B', 'C'], 'Longitude':[-102.65324700, -102.75365900, -102.90515700], 'Latitude':[48.47342600, 48.31341700, 48.11112400]})
您可以使用申请:
coordinates_df['distance'] = coordinates_df.apply(lambda row : dist(lat_string1,long_string1,row['Latitude'],row['Longitude']),axis=1)
然后就可以打印了
我有一对经度和纬度坐标,它们将被输入到函数中以求出它与第二对坐标之间的距离
例如:
lat_string1 = 48.167
long_string1 = -99.648
lat_string2 = 48.25606
long_string2 = -103.31802
使用 Haversine Distance 函数我可以找到这两个坐标之间的距离。
def dist(lat1, long1, lat2, long2):
# convert decimal degrees to radians
lat1, long1, lat2, long2 = map(radians, [lat1, long1, lat2, long2])
# haversine formula
dlon = long2 - long1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a))
# Radius of earth in kilometers is 6371
km = 6371* c
return km
print(dist(lat_string1, long_string1, lat_string2, long_string2))
272.09670525744474
如何将此函数应用于 lat_string1
和 long_string1
以及包含 1,000(或下面示例 df 中的三个)坐标对的 coordinates_df
,以便它可以打印A、B 和 C 的每个距离?
lat_string1 = 48.167
long_string1 = -99.648
coordinates_df = pd.DataFrame({'Name':['A', 'B', 'C'], 'Longitude':[-102.65324700, -102.75365900, -102.90515700], 'Latitude':[48.47342600, 48.31341700, 48.11112400]})
您可以使用申请:
coordinates_df['distance'] = coordinates_df.apply(lambda row : dist(lat_string1,long_string1,row['Latitude'],row['Longitude']),axis=1)
然后就可以打印了