pandas 如何在元旦重置星期计数器

How to reset week counter on the new-year day in pandas

如您所知,pandas dt 对象的周属性是 ISO 周。相反,我想为我的数据中的行分配一个周数,该周数在 1 月的第一天为 1,在第一个星期一(不是 1 月 1 日)变为 2。同样,我不想在 12 月有第 1 周。它应该增加周数而不是重置它。这是正常行为:

import pandas as pd

df = pd.DataFrame({"Date":pd.date_range(start = '12/27/2019', end = '1/2/2020')})
df["Week_day"] = df.Date.dt.weekday
df["Week"] = df.Date.dt.week
df

        Date  Week  Week_day
0 2019-12-27    52         4
1 2019-12-28    52         5
2 2019-12-29    52         6
3 2019-12-30     1         0
4 2019-12-31     1         1
5 2020-01-01     1         2
6 2020-01-02     1         3

这就是我想要的:

df2 = pd.DataFrame({"Date":pd.date_range(start = '12/27/2019', end = '1/2/2020'),
                   "Week":[52, 52, 52, 53, 53, 1, 1]})
df2["Week_day"] = df2.Date.dt.weekday
df2

        Date  Week  Week_day
0 2019-12-27    52         4
1 2019-12-28    52         5
2 2019-12-29    52         6
3 2019-12-30    53         0
4 2019-12-31    53         1
5 2020-01-01     1         2
6 2020-01-02     1         3

我可以使用 pandas 方法来实现还是应该编写自己的函数?

我们应该做

df.Date.dt.strftime('%W').astype(int)+1
Out[108]: 
0    52
1    52
2    52
3    53
4    53
5     1
6     1
Name: Date, dtype: int32