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.