我有一个熊猫字符串,实际上以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