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

如何将周格式数据(如1-2018)转换为Pandas datetime对象?

周数-年份格式转Pandas Datetime解决方案

你遇到的错误是因为%W(或%U)格式符必须搭配一周内具体某天的参数——单独的周数+年份无法唯一确定一个具体日期,Pandas不知道该取这一周的哪一天来生成datetime对象。

下面是两种可行的解决方法:

方法一:给日期字符串追加周内天数标识

直接在每个"周数-年份"字符串后追加一周内的天数(比如取周一或周日),再用完整的格式符转换:

import pandas as pd

df1 = pd.DataFrame(columns=["date"])
df1['date'] = ["1-2018", "1-2018", "2-2018", "2-2018", "3-2018", "4-2018", "4-2018", "4-2018"]

# 追加"-1"表示取该周的周一(%w=1对应周一),如果要取周日就追加"-0"
df1["date"] = pd.to_datetime(df1["date"] + "-1", format="%W-%Y-%w")

这里的%w是周内天数格式符:0代表周日,1代表周一,以此类推到6代表周六。

方法二:拆分周数和年份后构造datetime

先拆分出周数和年份,再结合周内天数参数生成datetime:

import pandas as pd

df1 = pd.DataFrame(columns=["date"])
df1['date'] = ["1-2018", "1-2018", "2-2018", "2-2018", "3-2018", "4-2018", "4-2018", "4-2018"]

# 拆分周数和年份并转为整数类型
df1[['week', 'year']] = df1['date'].str.split('-', expand=True).astype(int)
# 传入year、week和weekday参数生成datetime,weekday=0对应周一,weekday=6对应周日
df1['date'] = pd.to_datetime(df1[['year', 'week']].assign(weekday=0))

注意:不同地区对一周起始日的定义不同——%W以周一为一周第一天,%U以周日为一周第一天,你可以根据自己的需求调整格式符或weekday参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 23:15:46