求助:将pandas中YYYY-WNN格式列转换为日-月-年格式报错
Pandas中YYYY-WNN格式周数转日期的解决方法
问题原因
你用pd.to_datetime(df['YearWeekISO'], format="%Y-W%U")报错,核心原因是%U(以周日为一周起始的周数)或%W(以周一为一周起始的周数)的解析规则要求必须同时指定年份、周数和星期几,仅提供年和周数无法唯一确定日期。
解决方案
根据你需要的周内目标日期(比如周一/周日),选择以下任意一种方法:
方法1:转成ISO周的周一(最符合YYYY-WNN的ISO标准)
ISO周默认以周一为第一天,给原周字符串拼接-1表示周一,再解析:
# 处理跨年度周(比如2020-W53)更严谨的写法 df['Date'] = pd.to_datetime(df['YearWeekISO'] + '-1', format="%G-W%V-%u").dt.strftime("%d/%m/%Y") # 简化写法(适用于周数不跨年度的场景) df['Date'] = pd.to_datetime(df['YearWeekISO'] + '-1', format="%Y-W%W-%w").dt.strftime("%d/%m/%Y")
方法2:转成每周的周日(对应%U的周日起始规则)
如果需要以周日作为一周的结束日期,拼接-0表示周日:
df['Date'] = pd.to_datetime(df['YearWeekISO'] + '-0', format="%Y-W%U-%w").dt.strftime("%d/%m/%Y")
验证示例
针对示例2020-W53:
- 用方法1会得到
28/12/2020(该ISO周的周一) - 用方法2会得到
03/01/2021(该周的周日)
内容的提问来源于stack exchange,提问作者André Lourenço
相关产品推荐
相关产品推荐

