Skip to main content
 首页 » 编程设计

python之将 Pandas 列转换为用户定义的周数

2025年05月04日14qlqwjy

下面是 python 中一个相当大的数据框的一小部分。

ID          invoiceDate 
1           2017-07-18 
2           2017-10-17 
3           2017-08-20 
4           2017-09-05 
5           2017-08-20 
6           2017-11-08 
7           2017-09-17 
8           2017-11-10 
9           2017-08-14 
10          2017-08-24 

鉴于感兴趣的时间段在2017-07-13和2017-11-21之间,相当于20周。我需要将 invoiceDate 中的每个值映射到相应的周数。例如,2017-07-18 映射到第一周(第一周开始和结束于 2017-07-13 和 2017-07-19,分别)或 2017-08-20 到第 6 周(第 6 周开始和结束于 2017-08-17 和 2017-08- 23)。 invoiceDate 是对象类型。

请您参考如下方法:

使用 to_period使用 freq 'W-Wed' 改变一周的开始。

s = df['invoiceDate'].dt.to_period('W-Wed').dt.week 
df['Week_Num'] = (s - s.min() + 1) 

df['Week_Num'] = (df['invoiceDate'].dt.to_period('W-Wed').dt.week - df['invoiceDate'].dt.to_period('W-Wed').dt.week.min() + 1)

输出:

   productID invoiceDate  Week_Num 
0          1  2017-07-18         1 
1          2  2017-10-17        14 
2          3  2017-08-20         6 
3          4  2017-09-05         8 
4          5  2017-08-20         6 
5          6  2017-11-08        17 
6          7  2017-09-17        10 
7          8  2017-11-10        18 
8          9  2017-08-14         5 
9         10  2017-08-24         7