Удаление строк данных на основе условия в индексе datetime - PullRequest
0 голосов
/ 01 июня 2018

У меня большой массив данных с размером (43817, 6).Я создал меньший фрейм данных, состоящий из последних двух месяцев, с помощью следующего кода:

test_df = df1.last('3M')

Причина, по которой я выбрал «3M», связана с тем, что я запускаю код первого числа третьего месяца.Индекс в df - это datetimeindex.

Пример данных ниже:

                   Scheduled_Start_Date    CRQ Change Class 
Scheduled_Start_Date                                                      
2018-05-25 13:00:00   2018-05-25 13:00:00  CRQ000000114908     Standard   
2018-05-25 15:00:00   2018-05-25 15:00:00  CRQ000000115436     Standard   
2018-05-25 15:00:00   2018-05-25 15:00:00  CRQ000000115429     Standard   
2018-05-25 16:00:00   2018-05-25 16:00:00  CRQ000000115491     Standard   
2018-05-25 18:00:00   2018-05-25 18:00:00  CRQ000000115572     Standard   
2018-05-26 17:00:00   2018-05-26 17:00:00  CRQ000000115495    Emergency   
2018-05-29 11:00:00   2018-05-29 11:00:00  CRQ000000115240     Standard   
2018-05-29 21:00:00   2018-05-29 21:00:00  CRQ000000115507    Emergency   
2018-05-31 15:00:00   2018-05-31 15:00:00  CRQ000000115516     Standard   
2018-06-01 05:00:00   2018-06-01 05:00:00  CRQ000000115466     Standard   
2018-06-01 09:00:00   2018-06-01 09:00:00  CRQ000000115085       Normal

Я пытаюсь получить полное представление обо всех днях за последние два месяца независимо от того, когдаЯ запускаю код, и единственный способ, который я могу придумать, - это удалить любые строки с текущим нежелательным месяцем в индексе datetime, которые выходят за пределы двухмесячного периода.Например, если я запустил код для небольшого информационного кадра в 6/1, он вернет экземпляры в 6/1, которые мне нужно будет удалить.

Есть ли более простой способ получить последние два (завершено?) месяцев от индекса datetime, независимо от того, когда вы запускаете код?

1 Ответ

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

Вы можете удалить данные текущего месяца из df и посмотреть последние 2 месяца.После поиска за последние 2 месяца и удаления текущего месяца, а затем поиска еще одного месяца может быть грязно.

            A
2018-04-01  1
2018-04-21  10
2018-05-11  3
2018-05-31  4
2018-06-20  5

А затем удалите данные текущего месяца, прежде чем искать данные за последние n месяцев.

import datetime as dt
current_month = dt.datetime.today().month
df.drop(df.loc[df.index.month==current_month].index).last('2M')

Вывод:

            A
2018-04-01  1
2018-04-21  10
2018-05-11  3
2018-05-31  4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...