Чтобы проверить, отсутствуют ли данные за месяц в столбце даты - PullRequest
1 голос
/ 26 октября 2019

Я хочу проверить в столбце, если отсутствует определенный месяц данных. В моем столбце указаны все даты за два года между 2016 и 2017 годами, за исключением июня 2017 года. Этот столбец является столбцом даты покупки, в котором при совершении покупки записывается дата. Только за июнь 2017 года в нем не было зарегистрировано ни одной покупки, поэтому я хочу проверить недостающую стоимость и сообщить об этом недостающем месяце в EDA для моего проекта. Столбец dtype: datetime64 [ns]

Я использовал следующий код, но он показывает, что все месяцы отсутствуют, поскольку возвращаемое значение равно true. Выходные данные должны содержать все пропущенные месяцы из этого столбца в формате ММ-ГГГГ

df1.reindex(pd.period_range(df1.booking_date.min(),   
                            df1.booking_date.max(), 
                            freq= 'M')).isnull().all(1)

Пример набора данных выглядит следующим образом:

booking_date
2016-01-16 00:00:00
2016-02-14 00:00:00
2016-03-01 00:00:00
.....
2017-05-01 00:00:00
2017-07-10 00:00:00

, поэтому июньский месяц отсутствует иЯ хочу извлечь это

1 Ответ

1 голос
/ 26 октября 2019

Чтобы использовать переиндексировать в месячные периоды, индекс должен иметь тип отметка времени , но ваш индекс является индексом по умолчанию (последовательные числа).

Чтобы найти «пропущенные» месяцы, используйте следующий подход:

Установите индекс на booking_date , затем повторите выборку по месяцам и вычислите size каждой группы:

s = df1.set_index('booking_date').resample('MS').size()

Затем ограничьте этот результат элементами (месяцами) со значением 0 и возьмите их индексы (возможно, как «обычный» список):

s[s == 0].index.tolist()

Если вы хотите, чтобы эти пропущенные месяцы были такими же, как периоды (без даты начала каждого месяца), введите:

s[s == 0].index.to_period('M')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...