查找与某一天匹配的数组元素

时间:2017-09-05 13:31:28

标签: python pandas datetime python-datetime

我有一组日期时间对象

newElem.html();

我还有一个特定的观察时间戳

array([datetime.datetime(2009, 8, 1, 0, 0),
   datetime.datetime(2009, 8, 2, 0, 0),
   datetime.datetime(2009, 8, 3, 0, 0),
   datetime.datetime(2009, 8, 4, 0, 0),
   datetime.datetime(2009, 8, 5, 0, 0),
   datetime.datetime(2009, 8, 6, 0, 0),
   datetime.datetime(2009, 8, 7, 0, 0),
   datetime.datetime(2009, 8, 8, 0, 0),
   datetime.datetime(2009, 8, 9, 0, 0),
   datetime.datetime(2009, 8, 10, 0, 0),
   datetime.datetime(2009, 8, 11, 0, 0),
   datetime.datetime(2009, 8, 12, 0, 0),
   datetime.datetime(2009, 8, 13, 0, 0),
   datetime.datetime(2009, 8, 14, 0, 0),
   datetime.datetime(2009, 8, 15, 0, 0),
   datetime.datetime(2009, 8, 16, 0, 0),
   datetime.datetime(2009, 8, 17, 0, 0),
   datetime.datetime(2009, 8, 18, 0, 0),
   datetime.datetime(2009, 8, 19, 0, 0),
   datetime.datetime(2009, 8, 20, 0, 0),
   datetime.datetime(2009, 8, 21, 0, 0),
   datetime.datetime(2009, 8, 22, 0, 0),
   datetime.datetime(2009, 8, 23, 0, 0),
   datetime.datetime(2009, 8, 24, 0, 0),
   datetime.datetime(2009, 8, 25, 0, 0),
   datetime.datetime(2009, 8, 26, 0, 0),
   datetime.datetime(2009, 8, 27, 0, 0),
   datetime.datetime(2009, 8, 28, 0, 0),
   datetime.datetime(2009, 8, 29, 0, 0),
   datetime.datetime(2009, 8, 30, 0, 0),
   datetime.datetime(2009, 8, 31, 0, 0)], dtype=object)

我想找到数组中的哪个元素与我的时间戳相同。

我可以找到最近的时间:

Timestamp('2009-08-01 00:48:00')

但是,它找到了可以在不同日期的最接近的时间值(即,中午以后的任何一天都比第二天更接近原始日的午夜)。

我如何才能找到同一天的元素(即忽略子日时间单位并在日期匹配)。

我可以找到很多处理日期时算术的例子,但这些例子似乎不适用于日期时间对象的数组。

谢谢!

更新:这很简单吗?

np.where((data_array == this_date)== True)

1 个答案:

答案 0 :(得分:1)

使用

In [2205]: date_array.astype(np.datetime64) == this_date.date()
Out[2205]:
array([ True, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False], dtype=bool)

或者,

In [2199]: np.array([x.date() for x in date_array]) == this_date.date()
Out[2199]:
array([ True, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False], dtype=bool)