如何在Python中重新排列周数

如何在Python中重新排列周数,python,datetime,week-number,Python,Datetime,Week Number,我正在尝试按升序重新排列周数 例如,我首先从当前日期(2020年2月10日)提取前十周。然后我使用df['week]=df['time'].dt.week将我的time变量(YYYY-MM-DD格式)转换为weeks 周数的一个问题是,从2020年2月10日开始的十周是2019年12月2日。因此,2019年12月2日至2019年12月8日是2019年的第49周,2019年12月9日至2019年12月15日是第50周,依此类推。但是,我希望我的几周从第1周开始,而不是从第49周开始。因此,我想将第

我正在尝试按升序重新排列周数

例如,我首先从当前日期(2020年2月10日)提取前十周。然后我使用
df['week]=df['time'].dt.week
将我的
time
变量(YYYY-MM-DD格式)转换为weeks

周数的一个问题是,从2020年2月10日开始的十周是2019年12月2日。因此,2019年12月2日至2019年12月8日是2019年的第49周,2019年12月9日至2019年12月15日是第50周,依此类推。但是,我希望我的几周从第1周开始,而不是从第49周开始。因此,我想将第49周转换为第1周,第50周转换为第2周,第51周转换为第3周,第52周转换为第4周,第1周转换为第5周,依此类推


由于我不想手动执行此操作,是否有有效的方法执行此操作?

我相信
df['week']=(df['time'].dt.week-48)%52
将为您提供正确的结果

48在这里可能看起来像一个“神奇的数字”,但实际上它是从第1周开始的,所以你实际上需要

df['week'] = (df['time'].dt.week - (df['time'].dt.week.tail(1).iloc[0] - 1)) % 52