python中datetimeindex的长度

问题描述 投票:2回答:3

我只是找不到答案,我知道大熊猫为沙漠吃这样的问题。

我有一个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文档

python pandas datetime timedelta datetimeindex
3个回答
4
投票

您可以将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

2
投票

使用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会增加不必要的复杂性,你可以使用@jezrael's answer的一部分

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

1
投票

你也可以使用relativedelta如下:

from dateutil.relativedelta import relativedelta

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

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

© www.soinside.com 2019 - 2024. All rights reserved.