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

如何在Pandas中自定义10月1日为起始日期计算对应周数

Pandas自定义起始日期计算周数解决方案

实现步骤

  • 首先导入依赖库
import pandas as pd
import datetime
  • 合并年月日三列为标准日期列
    假设你的数据框名为df,存储日、月、年的列名分别为day、month、year,直接用pandas内置方法批量转换:
df['date'] = pd.to_datetime(df[['year', 'month', 'day']])
  • 定义周数计算的基准起始日期
    将你要求的起始10月1日替换为实际对应的年份即可,示例为2023年10月1日:
start_date = datetime.date(2023, 10, 1)
  • 批量计算周数并赋值给新列
    直接通过日期差值计算,无需手动写循环,自动生成week_num新列:
# 计算当前日期和基准日期的天数差,除以7向下取整后+1,保证10月1日所在周为第1周
df['week_num'] = ((df['date'] - pd.to_datetime(start_date)).dt.days // 7) + 1

特殊场景适配

如果你需要按财年计算,每年的10月1日都作为当年的周数起始点,用以下代码动态计算每行的基准起始日期即可:

def get_fiscal_week(row):
    # 月份>=10则财年起始为当年10月1日,否则为上一年10月1日
    if row['month'] >= 10:
        fiscal_start = datetime.date(row['year'], 10, 1)
    else:
        fiscal_start = datetime.date(row['year'] - 1, 10, 1)
    delta_days = (datetime.date(row['year'], row['month'], row['day']) - fiscal_start).days
    return (delta_days // 7) + 1

df['week_num'] = df.apply(get_fiscal_week, axis=1)

原代码问题说明

  • 你之前用的strftime("%U")是Python内置的标准周数计算规则,默认以每年1月1日所在周为第1周,无法适配自定义起始日期的需求
  • 无需手动写zip循环遍历取值,pandas向量化操作效率远高于手动循环,且可以直接赋值给数据框新列,不需要额外处理输出结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:45:03