ДАННЫЕ
df1 содержит имя проекта, имя менеджера, а также дату начала и окончания каждого проекта.В дате начала могут отсутствовать значения, но supp_date всегда доступно в качестве приблизительного значения.
project manager start_date end_date supp_date
Apple A 2001-05-03 2002-08-09 2002-05-10
Apple B 2002-10-03 2003-11-12 2002-10-09
Orange D nan 2002-10-21 2002-06-25
Banana C nan 2003-01-02 2002-11-03
Banana D nan 2003-12-15 2003-02-12
Peach C 2003-07-21 2003-10-12 2003-07-23
У df2 есть только дата и имя проекта:
project begin_date
Apple 2002-01-02
Banana 2003-05-13
IDEA
Для каждого проекта в df2 я хочу узнать его менеджера.Поскольку один и тот же проект имеет разных менеджеров в разные периоды, я могу использовать дату.Например, проект Apple в df2 стартовал 2002-01-02.В df1 есть два проекта с именем Apple, но 2002-01-02 находится между 2001-05-03 и 2002-08-09.Итак, мы знаем, что менеджер должен быть для Apple в df2.
Проект Banana в df2 стартовал 2003-05-13.Поскольку в df1 нет проектов start_date для банановых проектов, мы используем supp_date в качестве start_date.Итак, 2003-05-13 находится между 2003-02-12 и 2003-12-15, и мы знаем, что менеджер - D.
РЕЗУЛЬТАТ
project begin_date manager
Apple 2002-01-02 A
Banana 2003-05-13 D
Есть ли быстрый способ сделать следующее?df2 действительно большой (~ 1 миллион строк), поэтому я думаю, что цикл будет очень медленным ...
1) для каждого проекта в df2, проверьте, какой проект в df1 имеет то же имя
2) на основе 1), если start_date не отсутствует, используйте start_date.В противном случае используйте supp_date
3) найти менеджер, если begin_date находится между start_date и end_date, или между supp_date и end_date, если start_date отсутствует.
Большое спасибо за помощь !!