Как передать столбцы в двух фреймах данных в функцию гаверсина?

Я новичок в долгих и долгих вещах. Я нашел функцию Хаверсина, которая выглядит интересной. У меня есть два фрейма данных, которые я пытаюсь передать в функцию, но получаю сообщение об ошибке.

Вот функция.

import numpy as np lon1 = df[«longitude_fuze»] lat1 = df[«latitude_fuze»] lon2 = df[«longitude_air»] lat2 = df[«latitude_air»] # Haversine from math import radians, cos, sin, asin, sqrt def haversine(lon1, lat1, lon2, lat2): «»» Calculate the great circle distance between two points on the earth (specified in decimal degrees) «»» # convert decimal degrees to radians lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) # haversine formula dlon = lon2 — lon1 dlat = lat2 — lat1 a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2 c = 2 * asin(sqrt(a)) km = 6367 * c return km

Я пытаюсь добавить это в столбец во фрейме данных, вот так.

df[‘haversine_dist’] = haversine(lon1,lat1,lon2,lat2)

Функция компилируется нормально, но когда я пытаюсь ее вызвать, я получаю эту ошибку.

df[‘haversine_dist’] = haversine(lon1,lat1,lon2,lat2) Traceback (most recent call last): File «<ipython-input-38-cc7e470610ee>», line 1, in <module> df[‘haversine_dist’] = haversine(lon1,lat1,lon2,lat2) File «<ipython-input-37-f357b0fc2e88>», line 16, in haversine lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) File «C:Usersryansanaconda3libsite-packagespandascoreseries.py», line 129, in wrapper raise TypeError(f»cannot convert the series to {converter}») TypeError: cannot convert the series to <class ‘float’>

Вот два фрейма данных, которые я тестирую.

# Import pandas library import pandas as pd # initialize list of lists data = [[‘NY’, ‘Uniondale’, ‘Nassau’, ‘40.72’, ‘-73.59’], [‘NY’, ‘Uniondale’, ‘Nassau’, ‘40.72’, ‘-73.59’], [‘NY’, ‘Uniondale’, ‘Nassau’, ‘40.72’, ‘-73.59’], [‘NY’, ‘NY’, ‘New York’, ‘40.76’, ‘73.98’], [‘NY’, ‘NY’, ‘New York’, ‘40.76’, ‘73.98’]] # Create the pandas DataFrame df_result = pd.DataFrame(data, columns = [‘state’, ‘city’, ‘county’,’latitude_fuze’,’longitude_fuze’]) # print dataframe. df_result data = [[‘New York’, ‘JFK’, ‘40.63’, ‘-73.60’], [‘New York’, ‘JFK’, ‘40.64’, ‘-73.78’], [‘Los Angeles’, ‘LAX’, ‘33.94’, ‘-118.41’], [‘Chicago’, ‘ORD’, ‘40.98’, ‘73.90’], [‘San Francisco’, ‘SFO’, ‘40.62’, ‘73.38’]] # Create the pandas DataFrame df_airports = pd.DataFrame(data, columns = [‘municipality_name’, ‘airport_code’, ‘latitude_air’,’longitude_air’]) # print dataframe. df_airports

Я нашел функцию по этой ссылке.

https://kanoki.org/2019/12/27/how-to-calculate-distance-in-python-and-pandas-using-scipy-spatial-and-distance-functions/

Источник: ledsshop.ru

Стиль жизни - Здоровье!