什么决定了熊猫的最小和最大时间戳?

时间:2019-03-24 11:58:54

标签: python pandas datetime

熊猫的最小Timestamp是:

pd.Timestamp.min
Timestamp('1677-09-21 00:12:43.145225')

最大为:

pd.Timestamp.max
Timestamp('2262-04-11 23:47:16.854775807')

这意味着您不能将超出此范围的值转换为Pandas日期时间:

pd.Timestamp(datetime.date(2500, 1, 1))
OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 2500-01-01 00:00:00

什么决定这些限制?

2 个答案:

答案 0 :(得分:2)

日期时间类型使用带符号的64位整数以纳秒为单位存储。 那么该范围是[2 ^ -63; 2 ^ 63 -1]。使用0作为unix纪元(1970/01/01 00:00:00.0),您可以通过运行以下代码来查看结果,距0(unix纪元)大约292年。那么,最大的日期是前导0后跟63 1

表示的日期

运行以下代码进行自我证明。

max_int=2**63-1 # maximum integer
max_int/=10**9 # from nanoseconds to seconds
max_int/=86400 # from seconds to days
max_int/=365 # from days to years (suppose no leap years)
print(1970+max_int) # print the maximum year, with an error of days

编辑:正如本在下面的评论中所写,我没有报告出处。 here

答案 1 :(得分:0)

源是从numpy的int64类中可存储的最大和最小整数中得出的纳秒量,并进行了一些调整。您可以看到实现和有用的评论here