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

基于日期条件添加周分类列:标记本周与累计项目

解决方案

你的问题出在两个地方:一是获取当前周数的方法错误,二是只对比周数会忽略跨年场景的误判。以下是正确的实现步骤:

1. 核心思路

要准确标记「本周项目」,需要同时对比日期所在的年份和周数(不同年份可能有相同的周数,比如2023年第52周和2024年第52周是完全不同的周),只有当数据中的日期年份、周数和当前日期完全匹配时,才标记为Weekly,否则为Cumulative。

2. 正确代码实现

import pandas as pd
import numpy as np

# 确保日期列是datetime格式(你的原有代码)
df_site['RECEIVE DATE'] = pd.to_datetime(df_site['RECEIVE DATE'])

# 获取当前日期的年份和周数
current_dt = pd.Timestamp.today()
current_year, current_week = current_dt.isocalendar().year, current_dt.isocalendar().week

# 生成分类标识
df_site['Report_Type'] = np.where(
    # 同时匹配年份和周数
    (df_site['RECEIVE DATE'].dt.isocalendar().year == current_year) & 
    (df_site['RECEIVE DATE'].dt.isocalendar().week == current_week),
    'Weekly',
    'Cumulative'
)

3. 错误原因说明

你之前的代码df_site['RECEIVE DATE'].dt.isocalendar().today是无效写法:

  • dt.isocalendar()返回的是包含year/week/day的结构,并没有today方法,正确的做法是单独获取当前日期的年周信息。
  • 仅对比周数会导致跨年场景的错误标记,比如12月底的日期和次年1月初的日期,周数可能接近但属于不同年份,必须同时校验年份才能保证准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:15:06