2017-09-14 29 views
0

我有一个时间戳数据流解析并放入DataFrame。时间戳是有序的和增量的。它们代表发生的事件。如何检查datetime属于哪个日期时间周期/时间块?

我想resample数据使用pandas.DataFrame.resample为任意窗口大小x。我还希望有一个标记/检查来查看最近到达的事件是否不属于当前窗口,但已移动到大小为x的下一个窗口。

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

如何检查event_b.time不会在同一时间跨度为属于event_b.time

event_a.timepandas.Timestamp对象

回答

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') 
相关问题