Оптимизировать pandas n в n сравнение - PullRequest
0 голосов
/ 22 марта 2020

Я работаю с библиотекой pandas, проблема в следующем:

У меня есть два кадра данных:

  • Port_Dataframe, для каждого порта у меня есть долгота, широта, имя , ... Этот фрейм данных имеет только уникальные значения.
  • Ships_Dataframe, каждая строка - это корабль с указанным c временем (когда информация была отправлена), именем, координатами ... Этот фрейм данных может иметь несколько ряды с одинаковыми кораблями, это происходит потому, что корабли посылают свои позиции каждую x минуту, поэтому один и тот же корабль может находиться в разных позициях в разное время.

Я хочу найти для каждого порта, какие корабли были внутри. (один и тот же корабль может находиться в разных портах, потому что он может двигаться)

Корабль находится внутри порта, если расстояние между кораблями (долгота и широта), на расстоянии менее 1 км от порта (долгота и широта).

Я не знаю, как pandas работает при проверке указанного значения c внутри столбца, pandas автоматически применяет порядок или, если я сделаю это сам, прежде чем поиск приведет к улучшению времени?

Сначала я подумал о данных, а не о самом алгоритме. Первое решение:

1) Применить порядок к Ships_Dataframe, упорядочив строки по широте и после по долготе

2) Пусть pandas проверяет каждую строку, если ship_latitude - port_latitude < «определенное c расстояние» , если это так, то же самое для долготы, в противном случае go для следующей строки.

Я не уверен, поможет ли порядок по вычислению времени, и теперь я не могу проверить это с большими данными.

Другое решение использует алгоритм, я пытался найти что-то вроде ближайших соседей, чтобы найти возможные кластеры и выяснить, есть ли порт рядом с каждым кластером.

...