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

如何让Pandas将W_2022_27格式年周数据识别为%yyyy-%m日期?

用Pandas将W_YYYY_WW格式转换为YYYY-MM日期类型

核心思路

先从W_2022_27这类字符串中提取年份和周数,再通过Pandas的to_datetime解析为日期对象,最后格式化为YYYY-MM格式。

步骤与代码示例

假设你的DataFrame列名为week_column,具体操作如下:

  1. 提取年份和周数并格式化
    先去掉前缀W_,再将年份和周数拼接为YYYY-WW格式:
import pandas as pd

# 示例数据
df = pd.DataFrame({'week_column': ['W_2022_27', 'W_2023_05', 'W_2021_52']})

# 提取年份和周数,转为YYYY-WW格式
df['year_week'] = df['week_column'].str.replace('W_', '').str.replace('_', '-')
  1. 解析为日期对象
    根据你的周数规则选择对应的格式符:
  • 若以周日为一周起始,用%Y-%W:
    # 解析为该周的周一日期(weekday=0表示周一,可改为6取周日)
    df['date'] = pd.to_datetime(df['year_week'], format='%Y-%W', weekday=0)
    
  • 若遵循ISO标准(周一为一周起始),用%G-%V:
    df['date'] = pd.to_datetime(df['year_week'], format='%G-%V', weekday=0)
    
  1. 格式化为YYYY-MM
    将日期对象转为目标格式:
df['month'] = df['date'].dt.strftime('%Y-%m')

处理特殊情况

如果周数是单数字(如W_2022_7),需要补零确保格式统一:

# 提取年份和周数,补零后拼接
df['year_week'] = df['week_column'].str.extract(r'W_(\d{4})_(\d{1,2})').apply(
    lambda x: f"{x[0]}-{x[1].zfill(2)}", axis=1
)

最终结果示例

处理后DataFrame会包含解析后的日期和目标月份列:

week_columnyear_weekdatemonth
W_2022_272022-272022-07-042022-07
W_2023_052023-052023-02-062023-02
W_2021_522021-522021-12-272021-12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:47:59