我正在解析时间戳数据流并将其放入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.time
与event_b.time
的时间跨度不同。
event_a.time
是pandas.Timestamp
对象
答案 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.floor
和pandas.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')