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

将年份和周数转换为对应周周一日期 解决pandas操作Series类型报错

错误原因

datetime.date() 和 dateutil.relativedelta 仅支持传入单个标量值做计算,你直接传入pandas的Series类型列作为参数,类型不匹配,所以触发类型错误。

解决方法

方法1:使用pandas向量化操作(推荐,大数据量性能更高)

直接用pandas原生的日期处理方法实现逻辑,全程基于Series做向量计算,无需遍历:

import pandas as pd

test = pd.DataFrame({
    'week': [1, 2, 3],
    'year': [2021, 2021, 2022]
})

# 计算逻辑和你原单值逻辑完全对齐:每年1月4日加对应周数
test['Date'] = pd.to_datetime(test['year'].astype(str) + '-01-04') + pd.to_timedelta(test['week'], unit='W')

方法2:使用apply逐行计算(适合逻辑复杂、数据量小的场景)

如果要复用你已有的dateutil计算逻辑,可以逐行取出每行的year、week标量值做计算:

import pandas as pd
import datetime
from dateutil.relativedelta import relativedelta

test = pd.DataFrame({
    'week': [1],
    'year': [2021]
})

test['Date'] = test.apply(lambda row: datetime.date(row['year'], 1, 4) + relativedelta(weeks=row['week']), axis=1)

两种方法都能得到你预期的2021-01-11的计算结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:24:04