Под настройка последнего рабочего дня месяца для фрейма данных в Python - PullRequest
0 голосов
/ 04 июня 2018

У меня есть приведенный ниже фрейм данных, и я хочу разделить фрейм данных с последним рабочим днем ​​месяца на отдельный фрейм данных.

df = Date Open High Low Close Adj Close Volume 0 2007-06-18 0.33979 0.33979 0.33979 0.33979 0.33979 1591888 1 2007-06-29 0.33074 0.33074 0.33074 0.33074 0.33074 88440 2 2007-06-20 0.33526 0.33526 0.33526 0.33526 0.33526 3538 3 2007-06-21 0.32113 0.32113 0.32113 0.32113 0.32113 3550 4 2007-06-22 0.34713 0.34713 0.34713 0.34713 0.34713 670

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 = pd.to_datetime(df['Date'], format='%Y%m%d') + pd.offsets.BMonthEnd(1), но не работает, и я смотрел на здесь но не нашли правильного подхода.Может ли кто-нибудь помочь мне в решении этого.

1 Ответ

0 голосов
/ 04 июня 2018

Вы можете сделать это так:

# 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...