【发布时间】:2020-07-10 16:58:24
【问题描述】:
在给定以下数据帧的情况下,我面临与过滤掉在特定时间间隔内活动的事件相关的任何问题,即 7 到 9:
EventId StartTime EndTime
18 2013-04-11 16:33:11.735342100 2013-04-11 17:16:47.976164100
19 2013-04-10 16:33:46.575337300 2013-04-11 18:10:08.428443900
20 2013-04-10 17:17:04.033083300 2013-04-11 18:10:13.907757900
21 2013-04-11 00:10:24.293352100 2013-04-11 18:45:17.754240800
23 2013-04-11 01:11:20.278558900 2013-04-11 18:45:00.435247300
25 2013-04-15 09:42:22.549026700 2013-04-15 23:54:33.389964300
26 2013-04-16 07:42:24.588807700 2013-04-16 17:42:41.077751300
28 2013-04-19 16:51:22.699240800 2013-04-19 18:39:03.167468100
31 2013-04-19 18:30:56.891621300 2013-04-19 19:42:50.418640200
17 2013-04-20 16:07:07.327879000 2013-04-20 22:17:17.783053600
我想获取那些在上午 7 点到 9 点期间活动的事件,包括 8 点,并在将小时数提取为单独的列之后使用以下查询。
df['StartTime']=pd.to_datetime(df['StartTime'])
df['EndTime']=pd.to_datetime(df['EndTime'])
df['StartHr']=df['StartTime'].dt.hour
df['EndHr']=df['EndTime'].dt.hour
df[((df['StartHr']<=7)| (df['StartHr']==8)) & ((df['EndHr']==8)|(df['EndHr']>=9))]
它按预期工作,但鉴于数据集无法获得某些结果,例如事件 ID 20
20 2018-05-10 17:17:04.033083300 2018-05-11 18:10:13.907757900
因为这个活动在第二天7-9的时间间隔内有效,但我无法得到它。 id 26 和 21 同样适用于解决此问题的任何帮助。如何比较 pandas 中的日期时间值。
【问题讨论】:
标签: python pandas dataframe datetime