Вопросы

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

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

Вот функция.

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:\Users\ryans\anaconda3\lib\site-packages\pandas\core\series.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

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

Читать:
Сбой при монтировании тома оператора модуля Kubernetes, в результате чего модули не создаются

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

Похожие записи

Внешний ключ Gorm Many-to-one только для одной модели

admin

Расшифровать с помощью открытого ключа, используя openssl в командной строке

admin

KNITRO.jl не загружается на Julia 1.0

admin

Работает ли покрытие кода PHPUnit_Selenium?

admin

Отображение значения настраиваемого атрибута продукта на странице продукта WooCommerce

admin

Альтернатива ceil () и floor () для получения ближайших целочисленных значений выше и ниже значения с плавающей запятой?

admin