我只是找不到答案,我知道大熊猫为沙漠吃这样的问题。
我有一个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
但如果需要year
s与day
s:
from dateutil.relativedelta import relativedelta
r = relativedelta(idx[-1], idx[0])
print('{} years {} days'.format(r.years, r.days))
4 years 7 days
使用ptp
和np.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_series
和ptp
会增加不必要的复杂性,你可以使用@jezrael's answer的一部分
>>> (idx[-1] - idx[0]) / np.timedelta64(1, 'Y')
4.019247486259129
你也可以使用relativedelta如下:
from dateutil.relativedelta import relativedelta
relativedelta(idx[0], idx[-1]).years
确保较晚的日期是第一个参数。