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

如何在Polars中解析YYYY Week为日期列?代码执行报错求助

在Polars中解析YYYY Week格式为日期列

你的问题出在仅指定年和周数不足以确定具体日期——日期需要精确到某一天,Polars无法直接将周数范围转换为单个日期。需要补充每周具体哪天的信息(比如周一、周日),同时要注意周数的格式定义:

  • %U:以周日为一周第一天的周数
  • %W:以周一为一周第一天的周数

修正方案

假设你想取每周的周一作为日期,可按以下方式修改代码:

import polars as pl

df = pl.DataFrame({
    "week": [201901, 201902, 201903, 201942, 201943, 201944]
})

# 将周数字转为字符串,拼接"1"表示周一,用%Y%W%u解析(%u代表周一到周日1-7)
df = df.with_columns(
    pl.col("week")
    .cast(pl.String)
    .str.concat("1")
    .str.to_date("%Y%W%u")
    .alias("date")
)

print(df)

如果你想取每周的周日,则调整为:

df = df.with_columns(
    pl.col("week")
    .cast(pl.String)
    .str.concat("0")  # 补充周日的标识(%w中0代表周日)
    .str.to_date("%Y%U%w")
    .alias("date")
)

结果示例

以取周一为例,输出会是:

shape: (6, 2)
┌────────┬────────────┐
│ week   ┆ date       │
│ ---    ┆ ---        │
│ i64    ┆ date       │
╞════════╪════════════╡
│ 201901 ┆ 2018-12-31 │
│ 201902 ┆ 2019-01-07 │
│ 201903 ┆ 2019-01-14 │
│ 201942 ┆ 2019-10-14 │
│ 201943 ┆ 2019-10-21 │
│ 201944 ┆ 2019-10-28 │
└────────┴────────────┘

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:20:43