위치 및 타워 목록이 있습니다. 나는 각 위치마다 가장 가까운 타워가 무엇인지 알아 내려고 노력 중이다. 나는 작동하는 방법을 생각해 냈지만, 매우 비효율적 인 방법이라고 확신한다.데이터 프레임 (가장 가까운 이웃)의 각 지점에 가장 가까운 지점을 얻는 Python 방법
어떻게하면 더 파이썬적인 방식으로이 작업을 수행 할 수 있습니까?
약 4,000 개의 위치와 11,000 개의 타워가 있습니다. 저는 현재 해요 :
- 복용 거리
- 에 의해 정렬 모든 타워
- 까지의 거리를 찾는 각 위치
- 통해 반복 후 'nearest_tower의 데이터 프레임에 그를 추가 가까운 하나입니다.
여기에 코드입니다 :
nearest_tower = pd.DataFrame()
for i, location_rows in d[["Name", "Lat", "Long"]].T.iteritems():
tower_coords["Distance_km"] = tower_coords.apply(lambda row: distance_on_unit_sphere(location_rows ["Lat"], location_rows ["Long"], row['DIGITAL_LATITUDE'], row['DIGITAL_LONGITUDE'])*6373, axis=1)
a = tower_coords.sort(['Distance_km'], ascending = 1)[:1][["SITE_NUMBER", "DIGITAL_LATITUDE", "DIGITAL_LONGITUDE", "Distance_km"]]
a["Location_Name"] = location_rows ["Name"]
a["Location_Lat"] = location_rows ["Lat"]
a["Location_Long"] = location_rows ["Long"]
nearest_tower = nearest_tower.append(a)
print(i)
Tower_coords은 다음과 같습니다
SITE_NUMBER DIGITAL_LATITUDE DIGITAL_LONGITUDE
1 67.21 -30.432
...
tower_coords 란 무엇입니까? 그게 어떻게 생겼어? – usethedeathstar
아마도 로컬 타워까지의 거리가 힙에 놓여지면 가장 가까운 타워를 간단하게 튕겨 낼 수 있습니다. 그러나 아마도이 문제를 해결하기 위해 더 효율적인 데이터 구조가 있습니다. kd 트리처럼 @Hbcdev는 –
을 언급합니다. @usethedeathstar 파일 추가 예제는 타워의 경도와 위도를 보여줍니다. – Ger