根据从 11 月开始的日期分配从 1 开始的周数

Assign Week Number beginning at 1 based on Dates starting in November

我有一个日期列,日期从 11 月份开始。以下是示例:

| dt         |
|------------|
| 11/13/2017 |
| 11/13/2017 |
| 11/13/2017 |
| 11/13/2017 |
| 11/20/2017 |
| 11/20/2017 |
| 11/27/2017 |
| 11/27/2017 |
| 11/27/2017 |
| 12/4/2017  |
| 12/11/2017 |
| 12/18/2017 |
| 12/18/2017 |
| 12/25/2017 |
| 1/1/2018   |
| 1/8/2018   |

我想从日期中获取周数,但周数对于 11/13/2017 应该是 1,对于 11/20/2017 应该是 2,并且会继续增加到 1/8/2018。我怎样才能在 Python 中做到这一点?

你可以这样做:

df['week'] = (df['dt'] - df['dt'].min())//pd.to_timedelta('7D') + 1

输出:

           dt  week
0  2017-11-13     1
1  2017-11-13     1
2  2017-11-13     1
3  2017-11-13     1
4  2017-11-20     2
5  2017-11-20     2
6  2017-11-27     3
7  2017-11-27     3
8  2017-11-27     3
9  2017-12-04     4
10 2017-12-11     5
11 2017-12-18     6
12 2017-12-18     6
13 2017-12-25     7
14 2018-01-01     8
15 2018-01-08     9

让我们做,PS只是不要将您的列命名为 dt,因为 dtpandas

的函数
((df['dt']-df['dt'].min())//7).dt.days+1
Out[300]: 
0     1
1     1
2     1
3     1
4     2
5     2
6     3
7     3
8     3
9     4
10    5
11    6
12    6
13    7
14    8
15    9
Name: dt, dtype: int64