2017-02-08 42 views
-1

我有一個非常大的系列索引的時間戳。我想計算(last_value - first_value)給定的時間段。通過Python差異數據框滾動窗口

例如:

timstamp    value 
2016-11-08 00:00:00 1 
2016-11-08 00:00:02 3 
2016-11-08 00:00:03 -2 
2016-11-08 00:00:07 6 

在給予2秒的時間窗口,它應該返回:

2 [3 - 1] 
-5 [-2 - 3] 
0 [-2 - -2] 
0 [6 - 6] 

這是用來計算給定的時間內給價格利潤系列(正向回報)在不同的時間點[Timestaps不會連續]。另外,由於數據幀非常大,我希望在更短的時間內完成(循環會消耗大量時間)。

編輯:利潤系列改爲向前看而不是倒退。

附加測試案例(2秒窗口):

time      
2011-01-01 00:00:02.000 1 
2011-01-01 00:00:04.000 2 
2011-01-01 00:00:05.000 3 
2011-01-01 00:00:05.500 4 
2011-01-01 00:00:06.000 5 
2011-01-01 00:00:06.500 6 
2011-01-01 00:00:07.000 7 

利潤系列:

2011-01-01 00:00:02.000 1 [2-1] 
2011-01-01 00:00:04.000 3 [5-2] 
2011-01-01 00:00:05.000 4 [7-3] 
2011-01-01 00:00:05.500 3 [7-4] 
2011-01-01 00:00:06.000 2 [7-5] 
2011-01-01 00:00:06.500 1 [7-6] 
2011-01-01 00:00:07.000 0 [7-7] 

回答

2

試試這個

s.rolling('2001ms').apply(lambda x: x[-1] - x[0]).shift(-1).fillna(0) 

timstamp 
2016-11-08 00:00:00 2.0 
2016-11-08 00:00:02 -5.0 
2016-11-08 00:00:03 0.0 
2016-11-08 00:00:07 0.0 
Name: value, dtype: float64 
+0

嗨!我其實需要遠期利潤,並相應地更新了問題。 – Rajs123

+0

@ Rajs123看到更新後 – piRSquared

+0

但最後2秒窗口不一定是一個尺寸..它可以是多行 – Rajs123