您知道,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方法执行此操作还是应该编写自己的函数?
我们应该做
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