将现有日期时间数组转换为日期

时间:2014-09-02 19:18:41

标签: python datetime

我有一列日期。我想计算数组中每个日期时间与指定日期之间的天数。

import datetime    
print(mydates[0])

2013-04-30T20:00:00.000000000-0400

print(mydates[0] - datetime.date(2013,9,20))

TypeError: ufunc subtract cannot use operands with types dtype('<M8[ns]') and dtype('O')

我需要创建一个数组,其中包含这些日期之间的天数,但更一般地说,我还需要知道如何将日期时间数组转换为日期。

我发现另一篇帖子将datetime.datetime.now()转换为日期,但我不知道语法如何在现有的一组日期时间使用它。

Here is the link

1 个答案:

答案 0 :(得分:1)

您使用的是什么numpy类型(大概是np.datetime64)并且datetime模块中的类型不可隐式转换。

但它们显式可转换,这意味着你需要做的只是显式转换:

>>> mydates[0] - np.datetime64(datetime.date(2013,9,20))
numpy.timedelta64(-1,'D')
>>> mydates - np.datetime64(datetime.date(2013,9,20))
array([-1, 0, -152], dtype='timedelta64['D'])

(请注意'D'是因为我使用datetime值和日期单位;从输出中看,你看起来像是在使用纳秒单位。但这同样适用。)


如果您确实想将数组转换为datetime.date个对象的数组,那么可以 ......但这可能是一个坏主意。当您使用本机numpy类型时,您的阵列紧凑而快速;当你存储一般的Python类型时,数组并不比普通的Python列表更好,而且假装其他方式更有误导性而不是有用。

如果你解释了你实际上想要做什么,有人可能会解释一个更好的方法,而不是转换为date个对象的数组。