Python 熊猫中的数据差距发现(非填补)?

Python 熊猫中的数据差距发现(非填补)?,python,numpy,pandas,Python,Numpy,Pandas,我有一个gappy timeseries,它存储在一个带有datetimeindex的pandas数据框中。现在,我想确定时间序列中的间隔,以便确定连续的段,以便单独处理它们(在某些情况下,用足够短的间隔将段粘合在一起) 我有两种主要的方法可以做到这一点。第一种方法是使用各种方法重新编制索引,以获得规则的时间序列,并观察间隙区域中填充的NA值。在我的例子中,这会导致很多额外的行(即一些较长的间隙)。然后,您仍然需要执行额外的步骤来识别连续段 另一种方法,也是我目前正在使用的方法,是使用np.di

我有一个gappy timeseries,它存储在一个带有datetimeindex的pandas数据框中。现在,我想确定时间序列中的间隔,以便确定连续的段,以便单独处理它们(在某些情况下,用足够短的间隔将段粘合在一起)

我有两种主要的方法可以做到这一点。第一种方法是使用各种方法重新编制索引,以获得规则的时间序列,并观察间隙区域中填充的NA值。在我的例子中,这会导致很多额外的行(即一些较长的间隙)。然后,您仍然需要执行额外的步骤来识别连续段

另一种方法,也是我目前正在使用的方法,是使用np.diff对索引进行差分,并使用np.where查找差距。但是有没有一种更为本土的方法来解决这个问题呢?这似乎是一项相当普通的任务。我注意到np.diff和pandas在numpy和pandas版本的某些组合中存在问题,因此最好使用pandas-only解决方案

什么才是完美的呢

for segment in data.continuous_segments():
    # Process each segment

对于数据帧数据。

这可能适用于您:

df = pd.DataFrame([["2015-01-01",1],["2015-01-02",1],[np.nan,1],[np.nan,1],["2015-01-10",1],["2015-01-11",1]], columns = ['timestamp','value'])

continuous_segments = df[df.timestamp.notnull()].groupby(df.timestamp.isnull().cumsum())

for segment in continuous_segments:
     print (segment[1])

    timestamp  value
0  2015-01-01      1
1  2015-01-02      1
    timestamp  value
4  2015-01-10      1
5  2015-01-11      1

我认为这可能是一个很好的起点: