Я работаю с библиотекой pandas, проблема в следующем:
У меня есть два кадра данных:
- Port_Dataframe, для каждого порта у меня есть долгота, широта, имя , ... Этот фрейм данных имеет только уникальные значения.
- Ships_Dataframe, каждая строка - это корабль с указанным c временем (когда информация была отправлена), именем, координатами ... Этот фрейм данных может иметь несколько ряды с одинаковыми кораблями, это происходит потому, что корабли посылают свои позиции каждую x минуту, поэтому один и тот же корабль может находиться в разных позициях в разное время.
Я хочу найти для каждого порта, какие корабли были внутри. (один и тот же корабль может находиться в разных портах, потому что он может двигаться)
Корабль находится внутри порта, если расстояние между кораблями (долгота и широта), на расстоянии менее 1 км от порта (долгота и широта).
Я не знаю, как pandas работает при проверке указанного значения c внутри столбца, pandas автоматически применяет порядок или, если я сделаю это сам, прежде чем поиск приведет к улучшению времени?
Сначала я подумал о данных, а не о самом алгоритме. Первое решение:
1) Применить порядок к Ships_Dataframe, упорядочив строки по широте и после по долготе
2) Пусть pandas проверяет каждую строку, если ship_latitude - port_latitude < «определенное c расстояние» , если это так, то же самое для долготы, в противном случае go для следующей строки.
Я не уверен, поможет ли порядок по вычислению времени, и теперь я не могу проверить это с большими данными.
Другое решение использует алгоритм, я пытался найти что-то вроде ближайших соседей, чтобы найти возможные кластеры и выяснить, есть ли порт рядом с каждым кластером.