With that code below, i can generate a dataframe with all business days between two dates, but i dont know how to filter to only be included in dataframe the first business day of each month.
class Feriados_SP(AbstractHolidayCalendar):
rules = [
Holiday('Confraternização Universal', month=1, day=1),
Holiday('Aniversário de São Paulo', month=1, day=25),
Holiday('Segunda-Feira de Carnaval', month=1, day=1, offset=[Easter(), Day(-48)]),
Holiday('Terça-Feira de Carnaval', month=1, day=1, offset=[Easter(), Day(-47)]),
Holiday('Quarta-Feira de Cinzas', month=1, day=1, offset=[Easter(), Day(-46)]),
# Sexta-feira Santa
GoodFriday,
Holiday('Corpus Christi', month=1, day=1, offset=[Easter(), Day(60)]),
Holiday('Tiradentes', month = 4, day = 21),
Holiday('Dia do Trabalho', month = 5, day = 1),
Holiday('Revolução Constitucionalista', month=7, day=9, start_date='1997-01-01'),
Holiday('Independência do Brasil', month = 9, day = 7),
Holiday('Nossa Senhora Aparecida', month = 10, day = 12),
Holiday('Finados', month = 11, day = 2),
Holiday('Proclamação da República', month = 11, day = 15),
Holiday('Dia da Consciencia Negra', month=11, day=20, start_date='2004-01-01'),
Holiday('Vespera de Natal', month=12, day=24),
Holiday('Natal', month = 12, day = 25)]
sp_cal = Feriados_SP()
feriados_sp = sp_cal.holidays(datetime(2000, 12, 31), datetime(2079, 12, 31))
start = datetime(2024, 3, 1)
end = datetime(2025, 5, 5)
datas = pd.bdate_range(start, end, freq='C', holidays=feriados_sp)
print(datas)
I want to see a code that generates a dataframe with only the first business day of each month between two given dates.
Ive seen that using standart business day calendar using is_month_start function,
by adding this to the code:
primeiros_dias_uteis = datas[datas.is_month_start]
df = pd.DataFrame({‘Datas’: primeiros_dias_uteis})
print(df)
but it gives me the following error:
ValueError: Custom business days is not supported by is_month_start.
Erik is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.