如何在大熊猫新年那天重置星期计数器

问题描述 投票:0回答:1

您知道,pandas dt对象的week属性是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方法执行此操作还是应该编写自己的函数?

pandas datetime week-number
1个回答
0
投票

我们应该做

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
© www.soinside.com 2019 - 2024. All rights reserved.