【发布时间】:2019-04-06 16:16:23
【问题描述】:
数据
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
想法
对于 df2 中的每个项目,我想找出它的经理。由于同一个项目在不同时期有不同的经理,我可以使用日期。例如,df2 中的 Apple 项目于 2002-01-02 开始。 df1 中有两个名为 Apple 的项目,但 2002-01-02 在 2001-05-03 和 2002-08-09 之间。所以我们知道经理在 df2 中应该是 Apple 的 A。
df2 中的 Banana 项目于 2003 年 5 月 13 日开始。由于 df1 中没有 Banana 项目的 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 真的很大(约 100 万行),所以我认为循环会很慢......
1) 对于df2中的每个项目,检查df1中哪个项目同名
2) 基于 1),如果 start_date 不缺失,则使用 start_date。否则,使用 supp_date
3) 如果 begin_date 在 start_date 和 end_date 之间,或者如果 start_date 缺失,则在 supp_date 和 end_date 之间查找经理。
非常感谢您的帮助!!
【问题讨论】: