根据从 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
,因为 dt
是 pandas
的函数
((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
我有一个日期列,日期从 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
,因为 dt
是 pandas
((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