Вам понадобится pd.offsets.DateOffset
здесь, потому что временная дельта "1 год" не является фиксированным количеством времени.
s = pd.Series([201903])
0 201903
dtype: int64
# convert to datetime
dates = pd.to_datetime(s.map(str), format='%Y%m')
# subtract a year and convert back to YYYYMM format
(dates - pd.offsets.DateOffset(years=1)).dt.strftime('%Y%m').astype(int)
0 201803
dtype: int64
Как скаляр, решение почти такое же, только без аксессора .dt
.
date_have = 201903
date_want = (
pd.to_datetime(str(date_have), format='%Y%m') - pd.offsets.DateOffset(years=1))
int(date_want.strftime('%Y%m'))
# 201803