J'ai deux ensembles de données que j'ai besoin de joindre ensemble sur une distance entre deux conditions de coordonnées. J'ai créé une fonction en utilisant Haversines formula pour calculer distance_km mais je rencontre des contraintes de performance pour le temps qu'il faut.Joindre deux données sur la plus proche distance entre les coordonnées python
Dataset 1:
building_id | lat | lng
-------------|-------|--------
1 | 32.11 | -71.22
2 | 32.44 | -72.25
3 | 31.75 | -71.36```
Dataset 2:
building_id | lat | lng
------------|-------|--------
4 | 31.65 | -73.52
5 | 32.78 | -70.21
6 | 36.15 | -72.49
Chaque jeu de données a plus de 10 000 bâtiments en eux et je voudrais correspondre ensemble de données 2 à jeu de données 1 mais seulement quand la distance en km est inférieure à 0,0075.
J'itérer actuellement par chaque ligne de jeu de données 1 et regardant tous les combos lat lng de jeu de données 2 pour déterminer la distance minimale
dataset_2_latlng_dict = dict(zip(dataset_2.lng,dataset_2.lat))
for index, row in dataset_1.iterrows():
lat = row['lat']
lng = row['lng']
all_dist = []
final_list = []
for key, value in dataset_2_latlng_dict.iteritems():
distance = utils.distance_km(key,value,lng,lat)
all_dist.extend([distance])
final_list = sorted(all_dist, key=float)
dataset_1['min_distance'] = final_list[0]
Avez-vous un ensemble de données plus volumineux qui pourrait être utilisé pour les tests? –