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