У меня есть два фрейма данных, один с множеством строк lat
/ lon
точек, например:
lat lon
32.8000009 -117.536
32.800005 -117.047
etc...
Мы назовем это df1
,
и df
только с одной lat
/ lon
точкой (мы назовем ее df2
)
Ycoord Xcoord
32.8005 -117.0473
Я пытаюсь использовать функцию гаверсинуса для l oop через первый фрейм данных для каждой lat
lon
точки и найти расстояние от них до второй df
.
Я смог использовать код, чтобы выяснить, как пройти l oop через первый df
с помощью функции haversine
, вычислить расстояние от одной точки до следующей и поместить их в новый столбец , но как мне l oop через первый df
, сравнивая с этим вторым df
(только с одной парой точек) вместо предыдущей точки?
Вот предыдущий код, который я был используя:
def haversine(lat1, lon1, lat2, lon2, to_radians=True, earth_radius=6371):
"""
slightly modified version: of http://stackoverflow.com/a/29546836/2901002
Calculate the great circle distance between two points
on the earth (specified in decimal degrees or in radians)
All (lat, lon) coordinates must have numeric dtypes and be of equal length.
"""
if to_radians:
lat1, lon1, lat2, lon2 = map(np.radians,[lat1,lon1,lat2,lon2])
a = np.sin((lat2-lat1)/2.0)**2 + \
np.cos(lat1) * np.cos(lat2) * np.sin((lon2-lon1)/2.0)**2
return earth_radius * 2 * np.arcsin(np.sqrt(a))
df['distKM_cleaned'] = \
haversine(df.lat.shift(), df.lon.shift(),
df.loc[1:, 'lat'], df.loc[1:, 'lon'])
df['distMI_cleaned'] = df['distKM_cleaned'] * 0.621371
#distKM is in km, distMI is converted to miles
df.tail()
, и результат, который я получил, выглядел так:
lat lon distMI_cleaned
32.8000009 -117.536 0
32.800005 -117.047 .0003450
etc...
Итак, мой вопрос в том, как создать этот новый столбец, похожий на distMI_cleaned, но dist_from_df2 в качестве нового столбца? Извините, я новичок во всем этом и искал все в Google, чтобы зайти так далеко. Спасибо!