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
但是如果需要 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
会增加不必要的复杂性,您可以使用
的一部分
>>> (idx[-1] - idx[0]) / np.timedelta64(1, 'Y')
4.019247486259129
您还可以使用relativedelta,如下所示:
from dateutil.relativedelta import relativedelta
relativedelta(idx[0], idx[-1]).years
确保较晚的日期是第一个参数。
我就是找不到答案而且我知道 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
但是如果需要 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
会增加不必要的复杂性,您可以使用
>>> (idx[-1] - idx[0]) / np.timedelta64(1, 'Y')
4.019247486259129
您还可以使用relativedelta,如下所示:
from dateutil.relativedelta import relativedelta
relativedelta(idx[0], idx[-1]).years
确保较晚的日期是第一个参数。