日期三角洲的日期> 292年

MMC*_*CM_ 7 python datetime numpy pandas

我尝试获得各种大熊猫日期的日间三角洲.然而,对于大于292年的时间增量,我获得了负值.例如,

import pandas as pd
dates = pd.Series(pd.date_range('1700-01-01', periods=4500, freq='m'))
days_delta = (dates-dates.min()).astype('timedelta64[D]')
Run Code Online (Sandbox Code Playgroud)

但是,使用DatetimeIndex,我可以做到它,它按我想要的方式工作,

import pandas as pd
import numpy as np
dates = pd.date_range('1700-01-01', periods=4500, freq='m')
days_fun = np.vectorize(lambda x: x.days)
days_delta = days_fun(dates.date - dates.date.min())
Run Code Online (Sandbox Code Playgroud)

那么问题是如何获得Series对象的正确days_delta?

小智 1

请阅读此处专门了解 timedelta 限制:

Pandas 使用 64 位整数以纳秒分辨率表示 Timedelta。因此,64 位整数限制决定了 Timedelta 限制。

顺便说一句,这与文档提到的对 Pandas 时间戳的限制相同:

由于 pandas 表示纳秒分辨率的时间戳,因此使用 64 位整数可以表示的时间跨度仅限于大约 584 年

这表明文档为规避时间戳限制而提出的相同建议也可以应用于时间增量。时间戳限制的解决方案可以在文档中找到(此处):

如果您的数据超出了时间戳范围,请参阅时间戳限制,然后您可以使用PeriodIndex 和/或一系列周期来进行计算。