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)