我正在尝试计算此数据中每个滑动窗口内的持续时间:
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)
假设’DATE’是一个日期时间类型。