根据11月开始的日期分配从1开始的星期编号

时间:2020-10-21 20:35:33

标签: python pandas python-datetime week-number

我有一个date列,其日期从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,对于2017年11月20日,星期数应为2,并且将继续增加直到2018年1月8日。如何在Python中实现?

2 个答案:

答案 0 :(得分:3)

您可以这样做:

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

答案 1 :(得分:2)

让我们这样做吧,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
相关问题