我会稍微调整一下你的假设:
>>> import datetime
>>> start_dt = datetime.datetime(2024, 1, 1)
>>> min_week = min(df.week_nbr.str.rsplit(" ").str[-1].astype(int))
>>> df["new_cal_date"] = datetime.timedelta(days=7)*df.week_nbr.str.rsplit(" ").str[-1].astype(int).sub(min_week) + start_dt
>>> df
state_territory_code week_nbr new_cal_date
0 CA WEEK 49 2024-01-01
1 CA WEEK 49 2024-01-01
2 FL WEEK 49 2024-01-01
3 CA WEEK 50 2024-01-08
4 TN WEEK 50 2024-01-08
5 HI WEEK 50 2024-01-08
6 GA WEEK 51 2024-01-15
7 FL WEEK 51 2024-01-15
解释
你可能是想根据迄今为止的数字绘制一周的地图,而不是依赖于订单(即使是给定的)。
使用矢量化计算也会更好,
apply
通常较慢。
这里唯一需要注意的是,如果年份标记发生变化,但您可以通过分组/条件映射轻松缓解。