我想知道为什么
>>> 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
所以往往会有差异。
