我有两个数据帧,如下所示:
ID. Date1 X1
0002 2015-08-01 81
0002 2015-08-15 95
0003 2015-10-01 115.
0002 2015-09-15 126
0003 2015-10-15 129
0002 2016-02-01 265
0002 2016-02-15 279.
0003 2016-03-15 281.
0003 2016-03-15 281.
0002 2016-03-01 294
0003 2016-04-01 298.
0003 2016-04-01 298.
0002 2016-03-15 308
0003 2017-02-15 618
0002 2017-02-01 631.
0003 2017-03-01 632
0002 2017-02-15 645
第二个是休耕:
ID. DATE2.
0002 2016-02-11
0003 2016-03-16
0002 2017-01-19
0003 2015-09-10
0003 2016-02-19
0003 2016-03-22
0003 2015-12-07
现在,我想加入——合并——这两个数据_框架成为一个数据_框架,该框架基于ID和Data1以及Date2,并具有一定的条件。因此,我想要的数据帧应该如下所示:
ID Date1 X1 Date2
0002 2015-08-01 81 Nan
0002 2015-08-15 95 Nan
0003 2015-10-01 115. 2015-09-10
0002 2015-09-15 126 Nan
0003 2015-10-15 129 Nan
0002 2016-02-01 265 Nan
0002 2016-02-15 279. 2016-02-11
0003 2016-03-15 281. 2015-12-07
0003 2016-03-15 281. 2016-02-19
0003 2016-04-01 298. 2016-03-16
0003 2016-04-01 298. 2016-03-22
0002 2016-03-15 308 Nan
0003 2017-02-15 618 Nan
0002 2017-02-01 631. 2017-01-19
0003 2017-03-01 632 Nan
0002 2017-02-15 645 Nan
假设Date1指向收集数据的日期,Date2指向事件。我需要在输出数据框中显示在收集数据的两个日期之间是否发生了事件。例如,对于2015-10-01和2015-10-15之间的ID:003,是否发生了事件?在本例中,差异为15天,但我们有收集到的数据之间的差异超过一个月的情况,例如ID:002 2015-10-15和2016-02-15。此外,如果两个日期(日期1)之间发生了两个事件,我希望将它们显示在不同的行中,如上述示例所示。有人能帮忙处理这件事吗
我还尝试了以下代码:
myf = dataframe1.merge(dataframe2, how='left',on=['ID'])
mask = (pd.to_datetime(myf['Data1'], format='%Y-%m-%d') -
pd.to_datetime(myf['Data2'], format='%Y-%m-%d')).apply(lambda I: i.days <= 15 and i.days > 0)
myf.loc[~mask, 'Data2'] = np.nan
但是,只有每15天收集一次数据(在dataframe1中),它才能解决问题,在我的例子中,这并不总是正确的
目前没有回答
相关问题 更多 >
编程相关推荐