检测Dandas系列DatetimeIndex中的连续日期

时间:2014-12-28 19:05:31

标签: datetime numpy pandas date-arithmetic

我有日期格式(YYYY-MM-DD)的pandas系列DatetimeIndex,并希望标记连续区域,其中每个索引相对于一天是连续的 - 所以如果Datetime系列中缺少日期,我想要检测它,即:

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

2005-01-17和2005-02-15之间的缺失天数差距明显。

用pandas找不到简单的方法,而我期待一些我不知道的辅助功能。 更一般地说,也会赞赏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'))
])

2 个答案:

答案 0 :(得分:1)

尝试类似:

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

per @ chrisb对Calculating time difference between two rows

的回答

答案 1 :(得分:0)

Smci的答案无法解决问题所要求的检测缺少日期的问题。

我使用DataFrame.asfreq('D')来检测缺失值。那些缺失的日期将被列出,但其对应的值将显示NAN。例如:

df1 = df.asfreq('D)
missing_dates=df1[df1.Column.isnull()]