我有一个熊猫字符串,实际上以YYYMM格式表示为日期:
date_have=201903
我想要将日期转换为12个月之前的日期:
date_want=201803
我该怎么做? date_want的数据类型应为数字。
答案 0 :(得分:2)
您将需要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
答案 1 :(得分:0)
似乎太真实了:
date_want = pd.to_numeric(date_have) - 100