Как добавить 1 за последнюю неделю месяца и bfill как 0 в кадре данных панд? - PullRequest
0 голосов
/ 10 октября 2018

У меня есть приведенный ниже фрейм данных, и мне нужно заполнить 1 для последней недели этого месяца и года и недель отдыха для того же месяца и года как 0

df:

date        total
02/01/00    28.000568
09/01/00    28.000568
16/01/00    28.000568
23/01/00    28.000568
30/01/00    28.000568
06/02/00    12.500612
13/02/00    12.500612

вывод:

date        total         flg
02/01/00    28.000568     0
09/01/00    28.000568     0
16/01/00    28.000568     0
23/01/00    28.000568     0
30/01/00    28.000568     1
06/02/00    12.500612     0
13/02/00    12.500612     0

подскажите пожалуйста.

1 Ответ

0 голосов
/ 10 октября 2018

Преобразуйте в datetime, затем найдите, где месяц меняет строку на строку:

d = pd.to_datetime(df['date'],dayfirst=True).dt.month

df['flag'] = d.ne(d.shift(-1)).astype(int)

>>> df
       date      total  flag
0  02/01/00  28.000568     0
1  09/01/00  28.000568     0
2  16/01/00  28.000568     0
3  23/01/00  28.000568     0
4  30/01/00  28.000568     1
5  06/02/00  12.500612     0
6  13/02/00  12.500612     1

Обратите внимание, что я сделал это отдельно, чтобы не изменять формат date в кадре данных.Вы также можете сделать это на месте:

df['date'] = pd.to_datetime(df['date'],dayfirst=True)

df['flag'] = df['date'].dt.month.ne(df['date'].dt.month.shift(-1)).astype(int)

Также обратите внимание, что последняя строка помечена, даже если она не в желаемом выводе.Технически, это последняя запись за месяц 2

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