如何在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
相关产品推荐
相关产品推荐

