У меня есть рабочий script
, который преобразует Latitude
и Longitude
координаты в декартовы координаты. Тем не менее, я должен выполнить это для конкретных точек в каждый момент времени (row by row
).
Я хочу сделать нечто подобное на более крупном df
. Я не уверен, является ли loop
, который перебирает каждый row
, наиболее эффективным способом сделать это? Ниже script
, который преобразует одну точку XY.
import math
import numpy as np
import pandas as pd
point1 = [-37.83028766, 144.9539561]
r = 6371000 #radians of earth meters
phi_0 = point1[1]
cos_phi_0 = math.cos(np.radians(phi_0))
def to_xy(point, r, cos_phi_0):
lam = point[0]
phi = point[1]
return (r * np.radians(lam) * cos_phi_0, r * np.radians(phi))
point1_xy = to_xy(point1, r, cos_phi_0)
Это прекрасно работает, если я хочу конвертировать между отдельными точками. Вопрос в том, есть ли у меня большой фрейм данных или список (>100,000 rows
) координат. Будет loop
, что iterates
через каждый row
будет неэффективным. Есть ли лучший способ выполнить ту же функцию?
Ниже приведен пример чуть большего размера df
.
d = ({
'Time' : [0,1,2,3,4,5,6,7,8],
'Lat' : [37.8300,37.8200,37.8200,37.8100,37.8000,37.8000,37.7900,37.7900,37.7800],
'Long' : [144.8500,144.8400,144.8600,144.8700,144.8800,144.8900,144.8800,144.8700,144.8500],
})
df = pd.DataFrame(data = d)