从 YYYYMM 格式的日期中减去 1 年



我有一个熊猫字符串,实际上以YYYMM格式表示为日期:

date_have=201903

我想要的是转换为 12 个月前的日期:

date_want=201803

我该怎么做?date_want的数据类型应为数字。

这里需要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

这似乎好得令人难以置信:

date_want = pd.to_numeric(date_have) - 100

最新更新