Как найти пропущенные дни или часы, которые нарушают непрерывность в индексе Datetime?

#python #pandas #datetime #datetimeindex

#python #pandas #datetime #datetimeindex

Вопрос:

Заранее большое спасибо за помощь новичку в Python, такому как я!

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

Мне просто интересно, есть ли простой способ проверить, есть ли какой-либо пропущенный день или час (в зависимости от выбранной детализации), который нарушил бы совершенно постоянную временную дистанцию (между 2 датами) в индексе?

Вот пример другой проверки «должной осмотрительности», которую я выполняю. Я просто слежу за тем, чтобы соблюдался временной порядок:

  # Check timestamp order:
        i = 0
        for i in range(0,len(df.TS)-1):

            if df.TS[i] > df.TS[i 1]:
                print('Timestamp does not respect time direction, please check df.')
                break
            else:
            i  = 1
  

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

Еще раз большое спасибо и с наилучшими пожеланиями,

Pierre

Ответ №1:

Если df.TS это место, где вы храните свои данные даты и времени, то вы можете сделать это (например, для ежедневных данных, измените freq соответствующим образом):

 pd.date_range(start = df.TS.min(), end = df.TS.max(), freq = 'D').difference(df.TS)
  

Это вернет разницу между полным диапазоном и вашей серией дат и времени.