Обнаружение последовательных дат в серии панд DatetimeIndex

У меня есть серия панд DatetimeIndex в формате даты (YYYY-MM-DD) и хочу пометить последовательные регионы, где каждый индекс является последовательным по отношению к дню - поэтому, если в серии Datetime есть пропущенная дата, я хочу ее обнаружить, то есть:

...
2005-01-15
2005-01-16
2005-01-17
2005-02-15
2005-02-16
...

где разрыв между пропущенными днями между 2005-01-17 и 2005-02-15 очевиден.

Не могу найти простой способ сделать это с пандами, хотя я ожидаю некоторую вспомогательную функцию, о которой я не знаю. В более общем смысле, будет также приветствоваться решение numpy.


@smci, я не знаю что dput() есть, но вот один из способов создания образцов данных:

import pandas as pd
import numpy as np

data = pd.concat([
    pd.Series(np.random.randn(3), pd.date_range('2005-01-15', '2005-01-17')),
    pd.Series(np.random.randn(3), pd.date_range('2005-02-15', '2005-02-17'))
])

1 ответ

Решение

Попробуйте что-то вроде:

data.index - data.index.shift(1, freq=pd.DateOffset(1))

за ответ @chrisb на Расчет разницы во времени между двумя строками

Ответ Smci не сработал для определения пропущенной даты, поскольку вопрос задавался.

Я использую DataFrame.asfreq('D') для обнаружения пропущенных значений. Эти пропущенные даты будут перечислены, но их соответствующие значения покажут NAN. Например:

df1 = df.asfreq('D)
missing_dates=df1[df1.Column.isnull()]
Другие вопросы по тегам