Python:根据特定的开始和结束日期计算月份的星期数

时间:2020-05-13 20:37:20

标签: python pandas datetime python-datetime

我正在寻找该月的当前星期。这里已经有很多答案,但是我有以下情况:

  1. 一周从星期日至星期六

  2. 当月份更改时,应考虑大多数日期。例如,2020年3月30日是4月的第1周,因为该周中有3个日期为3月(29、30、31),但有4个日期为4月(1、2、3、4)。

  3. 示例开始日期和结束日期如下所示:

        start date  end date
Jan 1   12/29/2019  2/1/2020
Feb 2   2/2/2020    2/29/2020
Mar 3   3/1/2020    3/28/2020
Apr 4   3/29/2020   5/2/2020
May 5   5/3/2020    5/30/2020
Jun 6   5/31/2020   6/27/2020
Jul 7   6/28/2020   8/1/2020
Aug 8   8/2/2020    8/29/2020
Sep 9   8/30/2020   9/26/2020
Oct 10  9/27/2020   10/31/2020
Nov 11  11/1/2020   11/28/2020
Dec 12  11/29/2020  12/26/2020

我正在通过pd.merge进行此操作,其中我已经创建了1年的完整表格,可以查找并找到日期,但是我正在寻找不需要每年更新的自动化内容。

1 个答案:

答案 0 :(得分:0)

我创建了完整的年度表,如下所示: (为了节省空间,我将下面的数据框截短了,但是一直持续到年底为止)

df_week

    Month   Week    1   2   3   4   5   6   7
0   Jan W1  2019-12-29  2019-12-30  2019-12-31  2020-01-01  2020-01-02  2020-01-03  2020-01-04
1   Jan W2  2020-01-05  2020-01-06  2020-01-07  2020-01-08  2020-01-09  2020-01-10  2020-01-11
2   Jan W3  2020-01-12  2020-01-13  2020-01-14  2020-01-15  2020-01-16  2020-01-17  2020-01-18
3   Jan W4  2020-01-19  2020-01-20  2020-01-21  2020-01-22  2020-01-23  2020-01-24  2020-01-25
4   Jan W5  2020-01-26  2020-01-27  2020-01-28  2020-01-29  2020-01-30  2020-01-31  2020-02-01
5   Feb W1  2020-02-02  2020-02-03  2020-02-04  2020-02-05  2020-02-06  2020-02-07  2020-02-08
6   Feb W2  2020-02-09  2020-02-10  2020-02-11  2020-02-12  2020-02-13  2020-02-14  2020-02-15

然后我使用了以下内容:

# Finds today's date in YYYY-MM-DD format
>d = dt.datetime.today().strftime("%Y-%m-%d") 

#Find matching row in complete dataframe corresponding to the current date
>cal_week = df_week[df_week.eq(d).any(1)]["Week"].iat[0] 
>cal_week 
W2