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

时间:2019-06-17 15:17:06

标签: python pandas datetime

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

date_have=201903

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

date_want=201803

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

2 个答案:

答案 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