简体   繁体   English

如何在 Python 中重新排列周数

[英]How To Rearrange Week Numbers In Python

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).例如,我首先从当前日期(2020 年 2 月 10 日)中提取前十周。 Then I convert my time variable (YYYY-MM-DD format) to weeks using df['week'] = df['time'].dt.week .然后我使用df['week'] = df['time'].dt.week将我的time变量(YYYY-MM-DD 格式)转换为周。

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.周数的一个问题是,从 2020 年 2 月 10 日开始的十周是 2019 年 12 月 2 日。因此,2019 年 12 月 2 日到 2019 年 12 月 8 日是 2019 年的第 49 周和 2019 年 12 月 9 日到 2019 年 12 月 15 日的一周50,以此类推。 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.但是,我希望我的几周从第 1 周开始,而不是从第 49 周开始。因此,我想将第 49 周转换为第 1 周、第 50 周转换为第 2 周、第 51 周转换为第 3 周、第 52 周转换为第 4 周、第 1 周转换为第 5 周,以此类推。

Since I don't want to do this manually, is there an efficient way to do this?由于我不想手动执行此操作,是否有有效的方法来执行此操作?

I believe df['week'] = (df['time'].dt.week - 48) % 52 will give you the correct result.我相信df['week'] = (df['time'].dt.week - 48) % 52会给你正确的结果。

48 might seem like a "magic number" here, but it is actually starting week - 1 , so you will actually want 48 在这里似乎是一个“神奇的数字”,但实际上它是starting week - 1 ,因此您实际上会想要

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM