我正在尝试将日期减少到 1 个月。我的意思是提前 1 个月获得相同的日期。
import pandas as pd
import numpy as np
pd.to_datetime(201905, format='%Y%m') - np.timedelta64(1, 'M')
我希望得到上个月的第一天
Timestamp('2019-04-01 00:00:00')
但是输出是
Timestamp('2019-03-31 13:30:54')
当我尝试添加一个月时,问题似乎是一样的。
代码
pd.to_datetime(201905, format='%Y%m') + np.timedelta64(1, 'M')
返回
Timestamp('2019-05-31 10:29:06')
代替
Timestamp('2019-06-01 00:00:00')
我该如何解决这个问题?
我的最终目标是以整数格式 YYYYmm(如 201905)获取日期,然后添加(或减去)任意数量的月份并以相同的格式(整数,YYYYmm)返回新日期。也许可以用其他包轻松完成?
最佳答案
一个月的Timedelta是一年的长度除以12,所以是'average'
month unit:
a = pd.to_datetime(201905, format='%Y%m') - np.timedelta64(1, 'M')
print (a)
2019-03-31 13:30:54
如果要减去 1 个月,请使用 offsets.DateOffset
:
b = pd.to_datetime(201905, format='%Y%m') - pd.offsets.DateOffset(months=1)
print (b)
2019-04-01 00:00:00
关于python - 如何使用 numpy.timedelta 添加(或减去)1 个月?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60861383/