Skip to main content
 首页 » 编程设计

python之Timestamp.week 与 datetime.isocalendar

2025年05月04日19artech

我想知道为什么

>>> pandas.Timestamp(dt.datetime(2009,1,6)).week 

和

>>> datetime.datetime(2009,1,6).isocalendar()[1] 

不要给出相同的结果。

请您参考如下方法:

首先——您需要改掉整数以 0 开头的习惯。这意味着它们将被解释为八进制(base-8)常量,这会导致混淆:

>>> 10 
10 
>>> 010 
8 

至于为什么会给出两个不同的答案,原因有二:

(1) 您不是在比较周数。正如文档所说,isocalendar“[r]返回 [s] 包含 ISO 年、周数和工作日的三元组。”所以 isocalendar()[2] 将为您提供 ISO 工作日,而不是星期。

(2) ISO 日期的定义与您预期的略有不同(解释为 here )。例如,在最严重的情况下:

>>> dt.datetime(2010,1,1).isocalendar() 
(2009, 53, 5) 
>>> pd.Timestamp(dt.datetime(2010,1,1)).week 
1 

所以往往会有差异。