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

如何在Pandas DataFrame中将year_week转为day_month_year并解决月份报错?

解决year_week日期转day_month_year并设为DataFrame索引的问题

你有一份日期以year_week格式存储的数据集,想要将其转换为day_month_year格式并设为DataFrame索引,尝试的代码报错bad month number 13; must be 1-12,问题出在日期解析逻辑错误,以下是修正方案:

修正后的代码

import pandas as pd

# 若你的year_week是"YYYY_XX"格式,先转为pandas可识别的"YYYY-WXX"格式
df["Date"] = df["year_week"].str.replace("_", "-W")
# 解析为datetime类型,weekday=0指定取该周的周一(0=周一,6=周日,可按需调整)
df["Date"] = pd.to_datetime(df["Date"], format="%Y-W%W", weekday=0)
# 若需要将日期显示为`day_month_year`格式的字符串,添加此行
# df["Date_formatted"] = df["Date"].dt.strftime("%d_%m_%Y")
# 设置Date列为索引
df.set_index('Date', inplace=True)
# 删除原year_week列
df.drop('year_week', inplace=True, axis=1)
df.head()

原代码的错误点

  • 直接对Series调用split('-')无效,Series需用str.split()方法处理字符串
  • pd.to_datetime未指定格式时会自动猜测,极易将year_week解析为错误日期,导致出现13月这类无效值
  • dt.strptime不能直接作用于Series,解析日期应使用pd.to_datetime,格式化输出才用dt.strftime

内容的提问来源于stack exchange,提问作者Mert Çalış

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:35:26