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

如何用np.where处理周数跨年:周52时年份+1、周数重置为1

正确计算下一周的年份与周数(含跨年场景)

你的现有代码可正常处理非跨年的周数计算,但无法应对WEEK=52的跨年场景,以下是两种可行的修正方案:

方案一:使用np.where批量处理

通过分条件计算目标年份和周数,再拼接成结果字段,适合大数据量场景,执行效率高:

import numpy as np

# 计算目标年份:周数为52时年份+1,否则保持原年份
target_year = np.where(df_calls_subweek_target['WEEK'] == 52,
                       df_calls_subweek_target['YEAR'] + 1,
                       df_calls_subweek_target['YEAR'])
# 计算目标周数:周数为52时重置为1,否则周数+1
target_week = np.where(df_calls_subweek_target['WEEK'] == 52,
                       1,
                       df_calls_subweek_target['WEEK'] + 1)
# 拼接成年份-周数字符串
df_calls_subweek_target['YEAR_WEEK_targ'] = target_year.astype(str) + "_" + target_week.astype(str)

测试示例:

YEAR_WEEKYEAR_WEEK_targ
2008_522009_1
2008_392008_40

方案二:使用apply逐行处理

逻辑更直观易懂,适合数据量较小的场景:

def generate_next_week(row):
    if row['WEEK'] == 52:
        return f"{row['YEAR'] + 1}_1"
    else:
        return f"{row['YEAR']}_{row['WEEK'] + 1}"

df_calls_subweek_target['YEAR_WEEK_targ'] = df_calls_subweek_target.apply(generate_next_week, axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:15:54