将现有的日期时间数组转换为日期
我有一列日期。我想计算这些日期和一个指定日期之间的天数。
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())转换成日期,但我不知道怎么用这种语法来处理我已有的日期时间。
1 个回答
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
对象数组更好的方法。