numpy datetime64 add或substract date interval

Moe*_*Moe 12 python numpy date datetime64

我正在解析一个巨大的ascii文件,其中包含分配给条目的日期.所以,我发现自己使用与numpy.datetime64并行的datetime包来添加数组功能.我知道pandas包可能最适合用于约会,但是尝试在没有熊猫的情况下将其拉出来.我一直在寻找一种巧妙的方法来添加/减去某个日期步骤,例如一年或者3个月的datetime64对象.

目前,我正在将dt64对象转换为dt对象,并使用replace函数来更改年份,例如,之后必须将其转换回dt64,这对我来说有点麻烦.所以,如果有人只使用numpy.datetime64格式有更好的解决方案,我将不胜感激.

示例:将"YYYY-12-31"转换为"(YYYY-1)-12-31"

a = np.datetime64(2014,12,31)               # a is dt64 object
b = a.astype(object)                        # b is dt object converted from a
c = np.datetime64( b.replace(b.year-1))     # c is dt64 object shifted back 1 year (a -1year)
Run Code Online (Sandbox Code Playgroud)

Pug*_*gie 16

您可以使用numpy.timedelta64对象在numpy.datetime64对象上执行时间增量计算,请参阅Datetime和Timedelta Arithmetic.

由于一年可能是365天或366天,因此不可能减去一年,但您可以减去365天而不是:

import numpy as np
np.datetime64('2014-12-31') - np.timedelta64(365,'D')
Run Code Online (Sandbox Code Playgroud)

结果是:

numpy.datetime64('2013-12-31')

  • 当然,可以从日期中减去一年:结果是具有相同月份和日期但早一年的日期(对闰年的月末进行了明显的修正)。即 2016-02-29 - 1 Y = 2015-02-28。 (2认同)