How to find number of Mondays or any other weekday between two dates in Python?

datetime, python

Solution

This code still uses a for loop and an if/else.

import datetime
import calendar

def weekday_count(start, end):
  start_date  = datetime.datetime.strptime(start, '%d/%m/%Y')
  end_date    = datetime.datetime.strptime(end, '%d/%m/%Y')
  week        = {}
  for i in range((end_date - start_date).days):
    day       = calendar.day_name[(start_date + datetime.timedelta(days=i+1)).weekday()]
    week[day] = week[day] + 1 if day in week else 1
  return week

print(weekday_count("01/01/2017", "31/01/2017"))

# prints result
# {'Monday': 5, 'Tuesday': 5, 'Friday': 4, 'Wednesday': 4, 'Thursday': 4, 'Sunday': 5, 'Saturday': 4}

Problem

I have two dates between which I need to find out how many Mon- Fri are coming(except for Sta, Sun), everyday should be counted Currently I am thinking this: ``` import calendar import datetime start_date = datetime.datetime.strptime("01/01/2017",'%d/%m/%Y') end_date = datetime.datetime.strptime("31/01/2017",'%d/%m/%Y') week_arr = [0] * 7 calendar.day_name[start_date.weekday()] ## will give me name of day """ As I receive Monday I will increment week_arr[0] by 1, Tuesday week_arr[1]+= 1, """ ``` I am not getting how to do it effectively so that I dont use much line of code(less if -else and for loops), may be some tricks in pandas.

Original source