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

如何基于Date列创建YYYY-WW格式的datetime64类型YrWeek列

解决方案:生成YYYY-WW格式的datetime64类型列

先修正日期转换的基础代码

你第一步的代码缺少引号,正确的日期转换写法如下:

import pandas as pd
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d')

可行方案:生成对应周的datetime值

datetime64类型本质存储的是具体时间戳,无法直接存储"YYYY-WW"这种周标识,但我们可以生成每周的代表日期(比如每周一),同时设置显示格式为YYYY-WW,既满足类型要求,又符合视觉展示需求。

方法1:基于ISO周标准生成每周一的datetime

# 获取ISO年、周数,拼接成"年-周-周一"的字符串后转datetime
df['YrWeek'] = pd.to_datetime(
    df['Date'].dt.isocalendar().astype(str).agg('-'.join, axis=1) + '-1',
    format='%G-%V-%u'
)
# 设置显示格式为YYYY-WW(%V对应ISO周数)
pd.options.display.date_format = '%Y-%V'
  • isocalendar()返回ISO标准的年、周、星期几
  • %G对应ISO周年,%V对应ISO周数,%u代表星期几(1=周一),确保转换后的datetime是该周的第一天

方法2:利用周期转换快速生成

# 转换为以周一为起始的周周期,再取周期的起始时间(即每周一)
df['YrWeek'] = df['Date'].dt.to_period('W-MON').dt.start_time
# 设置显示格式为YYYY-WW
pd.options.display.date_format = '%Y-%V'
  • W-MON指定周周期以周一为起始,start_time返回该周期的起始datetime

你之前尝试失败的原因

  1. dt.to_period('M')生成的是月周期,和周需求不匹配
  2. 使用format='%Y-%w'是错误的:%w代表一周中的第几天(0=周日到6=周六),不是周数,导致转换失败返回NaT

内容的提问来源于stack exchange,提问作者1cjtc jj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:39:17