如何检查日期时间属于哪个日期时间段/时间块?

时间:2017-09-14 13:58:25

标签: pandas datetime

我正在解析时间戳数据流并将其放入DataFrame。时间戳是有序的和增量的。它们代表发生的事件。

我希望使用resample pandas.DataFrame.resample数据获取任意窗口大小x。我还希望有一个标志/检查以查看已到达的最后一个事件是否不属于当前窗口但已移至下一个大小为x的窗口。

                    Timespans
15:00         16:00           17:00           18:00
|-------A-------|-------B-------|-------C-------|
       event_a^   ^event_b

如何检查event_b.timeevent_b.time的时间跨度不同。

event_a.timepandas.Timestamp对象

1 个答案:

答案 0 :(得分:0)

我想过使用pd.Period类而只是做

pd.Period(event_a.time, freq=x) == pd.Period(event_b.time, freq=x)

按预期工作。

不幸的是,如果我想要一段时间从pd.Period开始到16:12

17:12无法接受抵消。

更新:pd.Period无法考虑低于1H的频率。试图做

pd.Period(pd.to_datetime('20170101 10:32'), '30min')
Out[12]: Period('2017-01-01 10:32', '30T') # 10:32 instead of 11:00

我提交了a ticket to pandas github repo,并会尝试更新是否有任何问题。在此期间,我找到了一种使用pandas.Timestamp.floorpandas.Timestamp.ceil

进行舍入的方法
pd.to_datetime('20170101 10:32:30').floor('30min')
Out[1]: Timestamp('2017-01-01 10:30:00')
pd.to_datetime('20170101 10:32:30').ceil('30min')
Out[2]: Timestamp('2017-01-01 11:00:00')