У меня есть фрейм данных, использующий Pandas в Python, который содержит координаты широты и долготы в каждой строке. Моя цель - добавить еще один столбец с именем «close_by», содержащий количество других записей в наборе данных, которые находятся в пределах 1 мили, используя haversine.
Я видел другие руководства для подобных проблем, как: https://engineering.upside.com/a-beginners-guide-to-optimizing-pandas-code-for-speed-c09ef2c6a4d6 Но они включают использование df.apply () для обновления каждой строки, чтобы добавить расстояние между координатами и некоторой статической определенной точкой. Мне не повезло найти или найти решение.
По сути, это то, что я пытаюсь оптимизировать:
for index1, row1 in business_data.iterrows():
for index2, row2 in business_data.iterrows():
distance = mpu.haversine_distance((business_data.at[index1,'latitude'], business_data.at[index1,'longitude']), (business_data.at[index2,'latitude'], business_data.at[index2,'longitude']))
distance = distance * 0.621371
if distance <= 1:
business_data.at[index1,'close_by'] = row1["close_by"] + 1
У меня около 50 000 строк, и на моем компьютере это занимает около 5 секунд на строку.
Спасибо за любые предложения!