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

基于起始周与年份生成周数相关列的问题排查

修正Year和Week #列的计算逻辑

你的问题出在年份增量和周数的计算逻辑错误,原代码用Starting Week period + Week Count来计算年份增量,而非实际的累计周数(Starting Week period + Week Count -1),导致年份提前进位、周数重置异常。

修正后的代码

import numpy as np

# 1. 计算从起始周开始的累计总周数(以起始年第1周为基准的绝对周数)
df['Total Weeks'] = df['Starting Week period'] + df['Week Count'] - 1

# 2. 计算年份增量:每52周递增1年
df['Year'] = df['Starting Year'] + (df['Total Weeks'] // 52)

# 3. 计算日历周数:总周数取模52,余数为0时对应当年第52周
df['Week #'] = df['Total Weeks'] % 52
df['Week #'] = df['Week #'].apply(lambda x: 52 if x == 0 else x)

# 4. 格式化周数为两位字符串
df['Week #'] = df['Week #'].astype(str).str.zfill(2)

# 5. 拼接Period列
df['Period'] = df['Year'].astype(str) + "-" + df['Week #']

# 可选:删除中间辅助列
# df.drop('Total Weeks', axis=1, inplace=True)

原代码问题分析

  1. 年份增量计算错误:
    原代码用(Starting Week period + Week Count) / 52取整,把比实际累计周数多1的数值作为计算基数,导致跨年度时年份提前进位。比如实际累计周数为103(第2年最后一周),Starting Week period + Week Count为104,104/52=2,年份会错误加2,正确应该只加1。
  2. 周数重置逻辑不严谨:
    原代码仅处理了首次超过52周的情况,未覆盖跨多个年度的场景,也未处理余数为0的情况(即当年第52周)。

逻辑验证示例(起始周51、起始年2023)

  • Week Count=2 → 总周数=52 → Year=2023 → Week #=52
  • Week Count=3 → 总周数=53 → Year=2024 → Week #=1
  • Week Count=54 → 总周数=104 → Year=2025 → Week #=52

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:55:40