Skip to content
Advertisement

Create a dataframe containing all weekends in a given year

Good afternoon,

I would like to create a function that, given a year, would return a dataframe with all the dates in Timestamp format related to the Saturdays and Sundays of that year. That is to say:

def get_saturdays_and_sundays(year):
   df = pd.DataFrame()
   # Generate dataframe
   return df

def main():
   print(get_saturdays_and_sundays(2022))

if __name__ == '__main__':  
    main()

The function would return:

|      date                 |     day          |
|---------------------------|------------------|
|          2022-01-01       |     Saturday     |
|          2022-01-02       |     Sunday       |
|          2022-01-08       |     Saturday     |
|          2022-01-09       |     Sunday       |
...
|          2022-12-24       |     Saturday     |
|          2022-12-25       |     Sunday       |
|          2022-12-31       |     Saturday     |

If you can tell me an optimal way to get that dataframe I would be grateful.

Advertisement

Answer

Well here’s my finished code. I think yours wasn’t working because you didn’t write anything.

from datetime import datetime
from datetime import timedelta
import calendar
import pandas as pd
import numpy as np


def daysInYear(year):
    beginningOfYear = datetime.strptime(f"{year}",r"%%Y")
    days = []
   
    for day_offset in range(365+calendar.isleap(year)):
        today = beginningOfYear+timedelta(days=day_offset,hours=1)
        days.append(today)
    return pd.Series(days)
def get_saturdays_and_sundays(year):

    daysInYearAndDayOfWeek = pd.DataFrame({"Date":daysInYear(year)})
    daysInYearAndDayOfWeek["Day Of The Week"] = daysInYearAndDayOfWeek["Date"].map(lambda date: calendar.day_name[date.weekday()])
    
    return daysInYearAndDayOfWeek[(daysInYearAndDayOfWeek["Day Of The Week"]=="Saturday") | (daysInYearAndDayOfWeek["Day Of The Week"]=="Sunday")]
    
x = get_saturdays_and_sundays(2018)
print(x)

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement