我试图在几个月内获得date1和date2之间的月数。结果只是2016-12减去2016-5,这是7.我只知道如何在int中获得天数,有人可以教我如何得到mths的结果,这是7?
import pandas as pd
import numpy as np
date1=pd.to_datetime('2016-12-1')
date2=pd.to_datetime('2016-5-27')
print((date1-date2)/np.timedelta64(1,'D'))
答案 0 :(得分:5)
您可以将日期转换为月期,然后进行减法:
date1.to_period("M") - date2.to_period("M")
# 7
答案 1 :(得分:2)
如果你不关心这个月的那一天,你可以这样做:
date1.year * 12 + date1.month - (date2.year * 12 + date2.month)
同月内的日期,例如'2016-12-31'和'2016-12-1',会给你0。
如果您确实要考虑该月内的某一天,则可以计算到达给定日期之前的月份比例。例如。如果一个月有30天,那么第一天的分数是0/30,最后一天的分数是29/30。 此代码段将执行此操作:
from calendar import monthrange
def get_frac_of_month(date):
# monthrange returns a tuple where the second entry is the number of days in the month
return 1. * (date.day - 1) / monthrange(date.year, date.month)[1]
def get_month_diff(date1, date2):
return date1.year * 12 + date1.month + get_frac_of_month(date1) - (date2.year * 12 + date2.month + get_frac_of_month(date2))
print get_month_diff(date1, date2)
输出将是
6.16129032258