You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中datetime第53周识别问题及年周一致性疑问

Pandas 元旦跨年周数匹配问题解决办法

这个问题的核心是日历年份和ISO周年份不匹配:2021年1月1日按ISO周规则属于2020年的第53周(ISO周规定一年的第一周必须包含该年的第一个周四,2020年的第53周覆盖到了2021年1月1日),但单独调用.year取的是日历年份,和ISO周数对应的年份不一致,自然会导致排序、分组时出现错位。

绝对不能分开调用.year和.week来组合年周标识,必须用统一的ISO年周规则来获取匹配的年份和周数,具体做法如下:

  • 使用.isocalendar()方法获取匹配的ISO年、周、日:
    dt = pd.to_datetime('2021-01-01 00:10:00+00:00')
    iso_result = dt.isocalendar()
    print(iso_result.year, iso_result.week)  # 输出 2020 53
    
  • 若要生成用于排序或分组的年周字符串,可直接组合ISO年和周:
    # 方法1:通过isocalendar拼接
    dt.isocalendar().apply(lambda row: f"{row.year}-W{row.week:02d}", axis=1)
    # 方法2:用strftime的ISO格式符
    dt.strftime("%G-W%V")  # 输出 '2020-W53'
    

注意:pandas中的.week属性返回的是ISO周数,但.year是日历年份,二者不属于同一规则体系,混用必然出现不匹配的情况。旧版的.weekofyear属性已被废弃,同样存在这个问题,所以优先使用上述ISO规则统一的方法。

内容的提问来源于stack exchange,提问作者Paul Fleming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 21:25:24