月减去月份

时间:2016-12-17 13:59:54

标签: python pandas

我试图在几个月内获得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'))

2 个答案:

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