【发布时间】:2020-06-15 03:01:29
【问题描述】:
正如标题建议的那样,我正在解决一个问题,即根据 ID 查找重叠日期并根据优先级(重量)调整重叠日期。以下代码有助于找到重叠的日期。
df['overlap'] = (df.groupby('ID')
.apply(lambda x: (x['End_date'].shift() - x['Start_date']) > timedelta(0))
.reset_index(level=0, drop=True))
df
现在我面临的问题是,如何引入优先级(权重)并以此调整 start_date。在下图中,我突出显示了基于权重的调整日期,其中 A 优先于 B,B 优先于 C。
我应该为字符串到数字权重值创建一个字典,然后呢?我被困在这里设置逻辑。
数据框:
op_d = {'ID': [1,1,1,2,2,3,3,3],'Start_date':['9/1/2020','10/10/2020','11/18/2020','4/1/2015','5/12/2016','4/1/2015','5/15/2016','8/1/2018'],\
'End_date':['10/9/2020','11/25/2020','12/31/2020','5/31/2016','12/31/2016','5/29/2016','9/25/2018','10/15/2020'],\
'Weight':['A','B','C','A','B','A','B','C']}
df = pd.DataFrame(data=op_d)
【问题讨论】:
标签: python-3.x pandas datetime