如何在复杂范围内选择带时间戳的行?

时间:2015-05-12 15:55:24

标签: pandas

我的数据框有一个时间戳列(dtype: datetime64[ns]),如下所示

ID    TIMESTAMP
1     2014-08-14 17:57:17
2     2014-08-14 17:50:11
3     2014-08-14 17:49:28
4     2014-08-14 17:58:10
5     2014-08-14 17:59:37
6     2014-08-14 17:25:46
7     2014-08-14 17:54:06
8     2014-08-14 17:55:48
9     2014-08-14 17:49:23
10    2014-08-14 17:40:21
...
301   2014-12-21 14:11:52
302   2014-12-21 14:22:22
303   2014-12-21 14:29:19
304   2014-12-21 14:27:37
305   2014-12-21 14:22:33
306   2014-12-21 14:26:25
307   2014-12-21 14:11:13
308   2014-12-21 11:41:54
309   2014-12-21 13:18:44
310   2014-12-21 14:26:31

现在假设我想查找2014-08-04至2014-08-24以及该期间每天17:55至18:00的行,我该如何使用pandas?我想我应该使用Timedelta,但我没有找到Timedelta的功能只有几个小时。谢谢。

1 个答案:

答案 0 :(得分:3)

丑陋但应该适合你:

In [113]:

df[(df['TIMESTAMP'] > '2014-08-04') & (df['TIMESTAMP'] < '2014-08-24') & (df['TIMESTAMP'].dt.time > dt.time(17,55)) & (df['TIMESTAMP'].dt.time < dt.time(18))]
Out[113]:
   ID           TIMESTAMP
0   1 2014-08-14 17:57:17
3   4 2014-08-14 17:58:10
4   5 2014-08-14 17:59:37
7   8 2014-08-14 17:55:48

因此我们可以使用日期字符串来比较日期,但是您需要构建时间对象的时间部分