繁体   English   中英

如何确定 Python 中两个日期之间的月数?

[英]How to determine number of months between two dates in Python?

我有两列是 datetime64[ns] 对象。 我正在尝试确定它们之间的月数。

这些列是:

city_clean['last_trip_date']
city_clean['signup_date']

格式为 YYYY-MM-DD

我试过了

from dateutil.relativedelta import relativedelta

city_clean['months_active'] = relativedelta(city_clean['signup_date'], city_clean['last_trip_date'])

并得到以下错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

有谁知道什么可能导致这个问题? 我觉得这是计算月数的最准确方法。

这是 Pandas,对吧? 试试这样:

# calculate the difference between two dates
df['diff_months'] = df['End_date'] - df['Start_date'] 
# converts the difference in terms of Months (timedelta64(1,’M’)-  capital M indicates Months)
df['diff_months']=df['diff_months']/np.timedelta64(1,'M') 

或者,如果您有适当的日期时间对象,

def diff_month(d1, d2):
    return (d1.year - d2.year) * 12 + d1.month - d2.month

我首先想到的...

>>> from datetime import datetime, timedelta

>>> dt1 = datetime(year=2020, month=3, day=1)
>>> dt2 = datetime(year=2020, month=5, day=1)
>>> # delta = dt2-dt1
>>> delta = abs(dt2-dt1)

>>> delta
datetime.timedelta(61)

>>> delta.days
61

您需要从relativedelta中提取所需的属性,在本例中为.months

from dateutil.relativedelta import relativedelta

rel = relativedelta(city_clean['signup_date'], city_clean['last_trip_date'])

city_clean['months_active'] = rel.years * 12 + rel.months

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM