首页
学习
活动
专区
圈层
工具
发布

月减月
EN

Stack Overflow用户
提问于 2016-12-17 13:59:54
回答 2查看 1.5K关注 0票数 4

我正试图在几个月内得到date1和date2之间的月数。结果就是简单的2016-12减去2016-5,也就是7。我只知道如何在int中获得天数,有人能教我如何用mth( 7 )来获得结果吗?

代码语言:javascript
复制
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'))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-17 14:29:25

您可以将日期转换为月份,然后执行减法:

代码语言:javascript
复制
date1.to_period("M") - date2.to_period("M")
# 7
票数 5
EN

Stack Overflow用户

发布于 2016-12-17 14:32:33

如果你不在乎一个月中的哪一天,你可以这样做:

代码语言:javascript
复制
date1.year * 12 + date1.month - (date2.year * 12 + date2.month)

同月内的日期,例如“2016-12-31”和“2016-12-1”,将给你0。

如果您确实想要计算月份中的某一天,则可以计算到给定日期之前的月份的分数。如果一个月有30天,那么第一天的分数是0/30,最后一天的分数是29/30。此代码段将执行以下操作:

代码语言:javascript
复制
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)

输出将是

代码语言:javascript
复制
6.16129032258
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41199351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档