熊猫的最小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
什么决定这些限制?
答案 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。