Python: Есть ли простой способ «приблизительного поиска» в доступных данных? - PullRequest
0 голосов
/ 09 марта 2020

Что я пытаюсь сделать:

У меня есть два фрейма данных, каждый из которых содержит 1 Mio + строк.

df_input1 содержит EventID и точная отметка времени, когда произошло соответствующее событие.

df_input2 содержит список так называемых номеров PO и отметку времени, когда этот номер PO действителен.

цель состоит в том, чтобы сопоставить действительный номер заказа на поставку с соответствующим событием на основе отметок времени. Это означает, что если событие происходит в 3:30:00, то номер заказа на покупку (действительный с 3:00:00) должен быть привязанным к этому событию в дополнительном столбце и т. д. (см. пример df_result )

df_input1

            EventStart  EventID
0  01.02.2019  4:00:00       10
1  01.02.2019  5:42:43       25
2  01.02.2019  6:14:07       24
3  01.02.2019  7:54:50       25
4  01.02.2019  8:51:56       24
5  01.02.2019  9:19:20       24
6  01.02.2019 10:07:41       23
7  01.02.2019 11:18:48       17


df_input2

              PO_Start  PO_ID
0  01.02.2019  3:00:00      1
1  01.02.2019  5:00:00      2
2  01.02.2019  7:00:00      3
3  01.02.2019  9:00:00      4

df_result

            EventStart  EventID  PO_ID
0  01.02.2019  4:00:00       10      1
1  01.02.2019  5:42:43       25      2
2  01.02.2019  6:14:07       24      2
3  01.02.2019  7:54:50       25      3
4  01.02.2019  8:51:56       24      3
5  01.02.2019  9:19:20       24      4
6  01.02.2019 10:07:41       23      4
7  01.02.2019 11:18:48       17      4

Specifi c вопрос: Есть ли уже определенное отображение функция доступна для того, чтобы сделать это? Может быть, как numpy функция? Я уже пытался сделать это с двумя связанными FOR циклами , которые проверяют строку за строкой. Это на самом деле работает довольно хорошо, но применение этого подхода к кадрам данных с событиями 1 Mio +, это занимает огромное количество времени обработки и не очень эффективно.

1 Ответ

0 голосов
/ 26 марта 2020

Anky_91 предоставил правильную подсказку для решения проблемы.

Использование pd.merge_asof - это быстрый способ отобразить данные двух таблиц, как требуется в приведенном выше описании варианта использования / проблемы.

Большое спасибо.

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