如何指定dt.week以在数据帧中使用北美周数?

2024-06-17 19:26:41 发布

您现在位置:Python中文网/ 问答频道 /正文

如何指定dt.week以使用北美周编号

2019年日历:

enter image description here

例如:日期->;2020年1月1日为2020年第1周/2019年12月31日为2019年第53周

df['Week'] = df['Induction Date'].dt.week.astype(str).str.zfill(2)

结果:

             SENDER_NAME     Induction Date       InductionPlant   Week
0          b'XXXXXXXXXXXX'     2020-01-03          b'XXXXXXXXXX'     01
8910353    b'XXXXXXXXXXXX'     2019-12-31         b'XXXXXXXXXXX'     01

Tags: namegtdfdatedtsender编号week
2条回答

您可以这样做:

df['Date'] = pd.to_datetime(df['Date'])
df['Week'] = df['Date'].dt.strftime('%U').astype(np.int) + 1

输出

   SENDER_NAME        Induction       Date  InductionPlant  Week
0            0  b'XXXXXXXXXXXX' 2020-01-03   b'XXXXXXXXXX'     1
1      8910353  b'XXXXXXXXXXXX' 2019-12-31  b'XXXXXXXXXXX'    53

这应该做到:

# Add this if "Induction Date" is not yet in pandas datetime format
# df["Induction Date"] = pd.to_datetime(df["Induction Date"])

df['Week'] = df['Induction Date'].dt.to_period('W-SAT').dt.week.astype(str).str.zfill(2)

通过.dt.to_period('W-SAT'),您可以指定一周的结束时间,在本例中是星期六

结果如下所示:

+         +    +
| Induction Date   |   Week |
|         +    |
| 2019-12-27       |     52 |
| 2019-12-28       |     52 |
| 2019-12-29       |     01 |
| 2019-12-30       |     01 |
| 2019-12-31       |     01 |
| 2020-01-01       |     01 |
| 2020-01-02       |     01 |
| 2020-01-03       |     01 |
| 2020-01-04       |     01 |
| 2020-01-05       |     02 |
+         +    +

相关问题 更多 >