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

Python实现年-周转换为对应周的首尾日期

解决方案

可以用 pandas 结合日期格式化实现需求,核心是利用周规则将Year&Week转换为对应周一的日期,再推导周日的日期:

步骤1:构造原始DataFrame

先还原初始数据:

import pandas as pd

# 原始数据
data = {
    "Year&Week": ["2022-50", "2022-51", "2022-52"],
    "年份": [2022, 2022, 2022],
    "周数": [50, 51, 52]
}
df = pd.DataFrame(data)

步骤2:计算周起始日(周一)和结束日(周日)

利用pandas.to_datetime解析周格式,再通过日期偏移计算结束日:

# 将Year&Week转换为对应周的周一
df["周起始日"] = pd.to_datetime(df["Year&Week"] + "-1", format="%Y-%W-%w")
# 周结束日为起始日加6天
df["周结束日"] = df["周起始日"] + pd.Timedelta(days=6)

# 格式化为要求的DD/MMM/YYYY格式(月份为英文缩写)
df["周起始日"] = df["周起始日"].dt.strftime("%d/%b/%Y")
df["周结束日"] = df["周结束日"].dt.strftime("%d/%b/%Y")

最终结果

运行后得到的DataFrame与需求格式完全匹配:

Year&Week年份周数周起始日周结束日
2022-5020225012/Dec/202218/Dec/2022
2022-5120225119/Dec/202225/Dec/2022
2022-5220225226/Dec/202201/Jan/2023

补充说明

  • 解析格式%Y-%W-%w中,%W代表周数,-1指定周一为一周起始;若需严格遵循ISO周规则,可改用%G-%V-%u格式:pd.to_datetime(df["Year&Week"] + "-1", format="%G-%V-%u"),结果一致。
  • strftime("%d/%b/%Y")用于将日期转为指定格式,%b会生成英文月份缩写(如Dec、Jan)。

内容的提问来源于stack exchange,提问作者exenlediatán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:50:46