如何在 Python 中重新排列周数
How To Rearrange Week Numbers In Python
我正在尝试按升序重新排列周数。
例如,我首先从当前日期(2020 年 2 月 10 日)提取前十周。然后我使用 df['week'] = df['time'].dt.week
将我的 time
变量(YYYY-MM-DD 格式)转换为周。
周数的一个问题是,从 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 在这里可能看起来像 "magic number",但实际上是 starting week - 1
,因此您实际上需要
df['week'] = (df['time'].dt.week - (df['time'].dt.week.tail(1).iloc[0] - 1)) % 52
我正在尝试按升序重新排列周数。
例如,我首先从当前日期(2020 年 2 月 10 日)提取前十周。然后我使用 df['week'] = df['time'].dt.week
将我的 time
变量(YYYY-MM-DD 格式)转换为周。
周数的一个问题是,从 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 在这里可能看起来像 "magic number",但实际上是 starting week - 1
,因此您实际上需要
df['week'] = (df['time'].dt.week - (df['time'].dt.week.tail(1).iloc[0] - 1)) % 52