Вы можете сделать это так:
# in case Date is not in datetime format:
df['Date'] = pd.to_datetime(df['Date'])
df_output = df.loc[df.Date.isin(df.Date + pd.offsets.BMonthEnd(1))]
Возвращает:
>>> df_output
Date Open High Low Close Adj Close Volume
1 2007-06-29 0.33074 0.33074 0.33074 0.33074 0.33074 88440
Пояснение :
df.Date + pd.offsets.BMonthEnd(1)
возвращаетряд последнего рабочего дня каждого месяца, для которого у вас есть данные:
>>> df.Date + pd.offsets.BMonthEnd(1)
0 2007-06-29
1 2007-07-31
2 2007-06-29
3 2007-06-29
4 2007-06-29
Затем вы используете loc
, чтобы найти любые строки в вашем фрейме данных, в которых фактический Date
находится в этой серии (используя .isin
)