Tôi biết rằng để tìm khoảng cách giữa hai, điểm kinh độ vĩ độ tôi cần phải sử dụng chức năng haversine:Vectorised Haversine công thức với một dataframe gấu trúc
def haversine(lon1, lat1, lon2, lat2):
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
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
Tôi có một DataFrame nơi một cột là vĩ độ và cột khác là kinh độ. Tôi muốn tìm hiểu xem những điểm này đến từ điểm đặt ra như thế nào, -56.7213600, 37.2175900. Làm cách nào để lấy các giá trị từ DataFrame và đặt chúng vào hàm?
dụ DataFrame:
SEAZ LAT LON
1 296.40, 58.7312210, 28.3774110
2 274.72, 56.8148320, 31.2923240
3 192.25, 52.0649880, 35.8018640
4 34.34, 68.8188750, 67.1933670
5 271.05, 56.6699880, 31.6880620
6 131.88, 48.5546220, 49.7827730
7 350.71, 64.7742720, 31.3953780
8 214.44, 53.5192920, 33.8458560
9 1.46, 67.9433740, 38.4842520
10 273.55, 53.3437310, 4.4716664
Tôi đã đăng câu trả lời giải quyết vấn đề của bạn nhưng tôi cho rằng nó là phụ tối ưu – EdChum
Đối với câu trả lời nhỏ, câu trả lời của tôi sẽ ổn nhưng đối với một df lớn hơn nhiều, bạn nên chuyển đổi độ thành radian và lưu trữ này và sau đó thực hiện các tính toán trên toàn bộ dataframe – EdChum
Tôi có 143 giá trị trong df và điều này dường như đã làm việc tốt. – user3755536