Python 如何使用numpy.timedelta添加(或减去)1个月?

Python 如何使用numpy.timedelta添加(或减去)1个月?,python,pandas,numpy,timedelta,Python,Pandas,Numpy,Timedelta,我想把日期减到一个月。我想提前一个月得到同样的日期 import pandas as pd import numpy as np pd.to_datetime(201905, format='%Y%m') - np.timedelta64(1, 'M') 我希望上个月的第一天 时间戳('2019-04-01 00:00:00') 但结果是 时间戳('2019-03-3113:30:54') 当我试图增加一个月时,问题似乎是一样的 代码 返回 时间戳('2019-05-31 10:29:0

我想把日期减到一个月。我想提前一个月得到同样的日期

import pandas as pd 
import numpy as np 

pd.to_datetime(201905, format='%Y%m') - np.timedelta64(1, 'M')
我希望上个月的第一天

时间戳('2019-04-01 00:00:00')

但结果是

时间戳('2019-03-3113:30:54')

当我试图增加一个月时,问题似乎是一样的

代码

返回

时间戳('2019-05-31 10:29:06')

而不是

时间戳('2019-06-01 00:00:00')

我怎样才能解决这个问题


我的最终目标是以整数格式YYYYmm(如201905)获取日期,然后添加(或减去)任何月数,并以相同格式(整数,YYYYmm)返回新日期。也许用另一个软件包可以很容易地做到这一点?

一个月的时间增量是一年的长度除以12,因此它是
平均值”
月单位:

a = pd.to_datetime(201905, format='%Y%m') - np.timedelta64(1, 'M')
print (a)
2019-03-31 13:30:54
如果想要减去1个月,请使用:


一个月不是一个统一的度量单位,我想这就是原因。根据具体情况,一个月可以是28天、29天、30天或31天。说“正好一个月”是没有意义的。@dspencer是的,你是对的。以月为单位的时间增量不能以天或小时表示。但在SQL中,它工作得很好。我不敢相信,python还没有创建任何东西。@JohnGordon是的,我这么说的意思是“提前N个月获得相同的日期”。包括多年的正确跳跃。比如201801-1个月=201712。谢谢!这正是我想要的。
a = pd.to_datetime(201905, format='%Y%m') - np.timedelta64(1, 'M')
print (a)
2019-03-31 13:30:54
b = pd.to_datetime(201905, format='%Y%m') - pd.offsets.DateOffset(months=1)    
print (b)
2019-04-01 00:00:00