df
A NUM_YYYYMM
0 a 201605
1 b 201602
2 c 201603
3 d 201601
其中type(df [‘NUM_YYYYMM’])返回int.我想计算t0 = 201612和列df [‘NUM_YYYYMM’]之间的月份差异.所以:
df
A NUM_YYYYMM deltaT
0 a 201605 7
1 b 201602 10
2 c 201603 9
3 d 201601 11
解决方法:
将列to_datetime
转换为to_period
的月份周期,从周期中减去t0:
t0 = '201612'
t = pd.to_datetime(t0, format='%Y%m').to_period('m')
df['deltaT'] = t - pd.to_datetime(df['NUM_YYYYMM'], format='%Y%m').dt.to_period('m')
print (df)
A NUM_YYYYMM deltaT
0 a 201605 7
1 b 201602 10
2 c 201603 9
3 d 201601 11
如果可以改变t0的格式:
t = pd.Period('2016-12')
df['deltaT'] = t - pd.to_datetime(df['NUM_YYYYMM'], format='%Y%m').dt.to_period('m')