-1

I am trying to rearrange the week numbers in ascending order.

For example, I first extract the previous ten weeks from whatever the current date is (Feb 10, 2020). Then I convert my time variable (YYYY-MM-DD format) to weeks using df['week'] = df['time'].dt.week.

One problem with the week numbers is that ten weeks from Feb 10, 2020 is Dec 2, 2019. So, Dec 2, 2019 to Dec 8, 2019 is week 49 of the year 2019 and Dec 9, 2019 to Dec 15, 2019 week 50, and so on. However, I want my weeks to start from week 1, not from week 49. Hence, I want to convert week 49 to week 1, week 50 to week 2, week 51 to week 3, week 52 to week 4, week 1 to week 5, and so on.

Since I don't want to do this manually, is there an efficient way to do this?

shsh
  • 684
  • 1
  • 7
  • 18

1 Answers1

1

I believe df['week'] = (df['time'].dt.week - 48) % 52 will give you the correct result.

48 might seem like a "magic number" here, but it is actually starting week - 1, so you will actually want

df['week'] = (df['time'].dt.week - (df['time'].dt.week.tail(1).iloc[0] - 1)) % 52
DeepSpace
  • 78,697
  • 11
  • 109
  • 154