numpy.datetime64:如何获取numpy datetime64的星期几并检查它是否在time1和time2之间

4 投票
1 回答
3835 浏览
提问于 2025-04-17 21:28

如何检查一个numpy的日期时间是否在时间1和时间2之间(不考虑日期)。假设我有一系列的日期时间,我想检查它是星期几,以及它是否在13:00到13:30之间。例如:

2014-03-05 22:55:00 

是星期三,并且不在13:00到13:30之间。

1 个回答

1

使用pandas这个库,你可以用DatetimeIndex.indexer_between_time这个方法来找到那些时间在13:00到13:30之间的日期。

举个例子,

import pandas as pd

dates = pd.date_range('2014-3-1 00:00:00', '2014-3-8 0:00:00', freq='50T')
dates_between = dates[dates.indexer_between_time('13:00','13:30')]
wednesdays_between = dates_between[dates_between.weekday == 2]

这里是dates中的前5个项目:

In [95]: dates.tolist()[:5]
Out[95]: 
[Timestamp('2014-03-01 00:00:00', tz=None),
 Timestamp('2014-03-01 00:50:00', tz=None),
 Timestamp('2014-03-01 01:40:00', tz=None),
 Timestamp('2014-03-01 02:30:00', tz=None),
 Timestamp('2014-03-01 03:20:00', tz=None)]

注意,这些日期的时间都是在13:00到13:30之间:

In [96]: dates_between.tolist()[:5]
Out[96]: 
[Timestamp('2014-03-01 13:20:00', tz=None),
 Timestamp('2014-03-02 13:30:00', tz=None),
 Timestamp('2014-03-04 13:00:00', tz=None),
 Timestamp('2014-03-05 13:10:00', tz=None),
 Timestamp('2014-03-06 13:20:00', tz=None)]

在这些日期中,只有这一天是星期三:

In [99]: wednesdays_between.tolist()
Out[99]: [Timestamp('2014-03-05 13:10:00', tz=None)]

撰写回答