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

Pandas计算日期周数报错'str' object has no attribute 'isocalendar'如何解决

问题修复方案

错误原因

你遇到的AttributeError: 'str' object has no attribute 'isocalendar'报错根因是:当前Date列的数据类型为object,实际存储的是字符串格式的日期,isocalendar是Python datetime类型、Pandas datetime64类型才支持的方法,调用前需要先完成日期格式转换。

推荐解决方案(矢量化操作,性能更高)

不需要用apply,直接用Pandas内置的矢量化方法处理,大体积数据集下效率远高于逐行apply:

  1. 先把Date列转换为Pandas datetime类型
df["Date"] = pd.to_datetime(df["Date"])
  1. 直接通过dt访问器提取ISO年度周数
df["date_week"] = df["Date"].dt.isocalendar().week

兼容原有apply写法的解决方案

如果你希望保留原有的apply写法,需要在lambda函数内先把字符串转为datetime对象:

  1. 先导入datetime模块
from datetime import datetime
  1. 调整apply逻辑,先解析日期再提取周数
df["date_week"] = df["Date"].apply(lambda x: datetime.strptime(x, "%Y-%m-%d").isocalendar()[1])

注意事项

  • 上述方法提取的是ISO标准周数,规则为每年第一个包含周四的周为第1周,如果你的业务场景需要适配其他周数规则,可以自行调整strftime参数,比如用df["Date"].dt.strftime("%U")提取周日为一周第一天的周数,%W提取周一为一周第一天的周数。
  • 转换日期时如果遇到格式不匹配的报错,可以给pd.to_datetime或者strptime指定对应日期格式参数,提升解析效率和准确率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 07:24:02