如何在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ış
相关产品推荐
相关产品推荐

