Обнаружение последовательных дат в серии панд 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()]