【发布时间】:2019-01-13 18:27:49
【问题描述】:
我有一个数据框,每 10 分钟有一个日期时间列和一个数值:
df1 = pd.DataFrame({'time' : pd.date_range('1/1/2018', periods=20, freq='10min'), 'value' : np.random.randint(2, 20, size=20)})
还有一个有活动时间表,有开始时间和结束时间。可以同时发生多个事件:
df2 = pd.DataFrame({'start_time' : ['2018-01-01 00:00:00', '2018-01-01 00:00:00','2018-01-01 01:00:00', '2018-01-01 01:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00' ], 'end_time' : ['2018-01-01 01:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00','2018-01-01 02:00:00', '2018-01-01 02:00:00', '2018-01-01 03:00:00'], 'event' : ['A', 'B', 'C', 'D', 'E', 'F'] })
df2[['start_time', 'end_time']] = df2.iloc[:,0:2].apply(pd.to_datetime)
我想在 df1 上进行左连接,所有事件都在开始时间和结束时间之内。我的输出表应该是:
time value event
0 2018-01-01 00:00:00 5 A
1 2018-01-01 00:00:00 5 B
2 2018-01-01 00:10:00 15 A
3 2018-01-01 00:10:00 15 B
4 2018-01-01 00:20:00 16 A
5 2018-01-01 00:20:00 16 B
.....
17 2018-01-01 02:50:00 7 F
我尝试了these SO solutions,但由于重复的时间间隔而失败。
【问题讨论】:
-
我不明白你从哪里得到前两个
value=5。 -
@user3483203
value设置为随机数,所以结果为示例。 -
啊,应该先看,谢谢:P