我正试图计算每个滑动窗口内此数据的持续时间:

                                ID
    DATE
    2017-05-17 15:49:51         2
    2017-05-17 15:49:52         5
    2017-05-17 15:49:55         2
    2017-05-17 15:49:56         3
    2017-05-17 15:49:58         5
    2017-05-17 15:49:59         5

在这个例子中,DATE是索引,我试图得到大小为3的滚动窗口内的持续时间,它们相互重叠。答案应该是这样的:
                                ID      duration
    DATE
    2017-05-17 15:49:51         2        4
    2017-05-17 15:49:52         5        4
    2017-05-17 15:49:55         2        3
    2017-05-17 15:49:56         3        3
    2017-05-17 15:49:58         5        NaN
    2017-05-17 15:49:59         5        NaN

我试过:
df['duration'] = df.rolling(window=3).apply(df.index.max()-df.index.min())

但我犯了个错误:
TypeError: 'DatetimeIndex' object is not callable

最佳答案

df.reset_index(inplace=True)
df['PREVIOUS_TIME']= df.DATE.shift(-2)
df['duration']=(df.PREVIOUS_TIME-df.DATE)/np.timedelta64(1,'s')
df.drop('PREVIOUS_TIME',axis=1,inplace=True)
df.set_index('DATE',inplace=True)

假设“日期”是日期时间。

关于python - 如何从 Pandas 的DatetimeIndex中获取滚动窗口内的持续时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46151507/

10-11 02:53
查看更多