python 中日期时间索引的长度

Length of a datetimeindex in python

我就是找不到答案而且我知道 pandas 吃沙漠这样的问题。

我有一个 datetime index 并且想知道它的长度,以年为单位:

idx=pd.date_range('2011-07-03', '2015-07-10')

预期输出:

4.0191 years   (4 years and 7 days)

如果我这样做: idx[0]-idx[-1] 我在 days 得到了一个输出,但我喜欢它在几年

抱歉:找不到 panads 文档

如果不需要,您可以将 timedelta 转换为天,然后除以 365.25 100% 准确度:

idx=pd.date_range('2011-07-03', '2015-07-10')

print ((idx[-1]-idx[0]).days / 365.25)

4.0191649555099245

但是如果需要 years 和 days:

from dateutil.relativedelta import relativedelta

r = relativedelta(idx[-1], idx[0])
print('{} years {} days'.format(r.years, r.days))
4 years 7 days

使用 ptpnp.timedelta64:

>>> idx.to_series().ptp() / np.timedelta64(1, 'Y')
4.019247486259129

如果你想让它更具体(精确到天数)并得到 Timedelta 对象,就不要除:

>>> idx.to_series().ptp()
Timedelta('1468 days 00:00:00')

如果 date_range 总是排序,那么使用 to_seriesptp 会增加不必要的复杂性,您可以使用

的一部分
>>> (idx[-1] - idx[0]) / np.timedelta64(1, 'Y')
4.019247486259129

您还可以使用relativedelta,如下所示:

from dateutil.relativedelta import relativedelta

relativedelta(idx[0], idx[-1]).years

确保较晚的日期是第一个参数。