问题是
DatetimeIndex
没有排序,所以需要
DataFrame.sort_index
:
df.index = pd.DatetimeIndex(df["TIME"])
df = df.sort_index()
df["DELAY_LAST2HOURS"] = df["DELAY"].rolling("2H").mean()
print (df)
TIME DELAY DELAY_LAST2HOURS
TIME
2016-01-01 06:30:00 2016-01-01 06:30:00 0 0.000000
2016-01-01 07:05:00 2016-01-01 07:05:00 2 1.000000
2016-01-01 08:10:00 2016-01-01 08:10:00 7 3.000000
2016-01-01 10:40:00 2016-01-01 10:40:00 0 0.000000
2016-01-01 11:00:00 2016-01-01 11:00:00 1 0.500000
2016-01-01 11:35:00 2016-01-01 11:35:00 2 1.000000
2016-01-01 14:10:00 2016-01-01 14:10:00 2 2.000000
2016-01-02 13:50:00 2016-01-02 13:50:00 2 2.000000
2016-01-02 14:05:00 2016-01-02 14:05:00 1 1.500000
2016-01-02 14:50:00 2016-01-02 14:50:00 4 2.333333
如果不需要的话,所有这些都应该是原始的
TIME
专栏:
df["TIME"] = pd.to_datetime(df["TIME"])
df = df.set_index('TIME').sort_index()
df["DELAY_LAST2HOURS"] = df["DELAY"].rolling("2H").mean()
print (df)
DELAY DELAY_LAST2HOURS
TIME
2016-01-01 06:30:00 0 0.000000
2016-01-01 07:05:00 2 1.000000
2016-01-01 08:10:00 7 3.000000
2016-01-01 10:40:00 0 0.000000
2016-01-01 11:00:00 1 0.500000
2016-01-01 11:35:00 2 1.000000
2016-01-01 14:10:00 2 2.000000
2016-01-02 13:50:00 2 2.000000
2016-01-02 14:05:00 1 1.500000
2016-01-02 14:50:00 4 2.333333
编辑:
df["TIME"] = pd.to_datetime(df["TIME"])
df = df.sort_values('TIME').set_index('TIME')
df["DELAY_LAST2HOURS"] = df["DELAY"].rolling("2H").mean()