2017-02-09 112 views
1

如何计算每列滚动(窗口= 60)值的坡度,增加5?大熊猫 - 滚动坡度计算

我想计算每5分钟的价值,我不需要每个记录的结果。

这里的样本数据框和结果:

df 
Time    A ...  N 
2016-01-01 00:00 1.2 ... 4.2 
2016-01-01 00:01 1.2 ... 4.0 
2016-01-01 00:02 1.2 ... 4.5 
2016-01-01 00:03 1.5 ... 4.2 
2016-01-01 00:04 1.1 ... 4.6 
2016-01-01 00:05 1.6 ... 4.1 
2016-01-01 00:06 1.7 ... 4.3 
2016-01-01 00:07 1.8 ... 4.5 
2016-01-01 00:08 1.1 ... 4.1 
2016-01-01 00:09 1.5 ... 4.1 
2016-01-01 00:10 1.6 ... 4.1 
.... 

result 
Time    A ...  N 
2016-01-01 00:04 xxx ... xxx 
2016-01-01 00:09 xxx ... xxx 
2016-01-01 00:14 xxx ... xxx 
... 

可以df.rolling功能被应用到这个问题?

这很好,如果楠窗口,这意味着子集可以是小于60

回答

-1

你可以使用pandas Resample。需要注意的是使用这个,你需要一个指数随时间值

df.index = pd.to_datetime(df.Time) 
print df 
result = df.resample('5Min').bfill() 
print result 
           Time A N 
Time           
2016-01-01 00:00:00 2016-01-01 00:00 1.2 4.2 
2016-01-01 00:01:00 2016-01-01 00:01 1.2 4.0 
2016-01-01 00:02:00 2016-01-01 00:02 1.2 4.5 
2016-01-01 00:03:00 2016-01-01 00:03 1.5 4.2 
2016-01-01 00:04:00 2016-01-01 00:04 1.1 4.6 
2016-01-01 00:05:00 2016-01-01 00:05 1.6 4.1 
2016-01-01 00:06:00 2016-01-01 00:06 1.7 4.3 
2016-01-01 00:07:00 2016-01-01 00:07 1.8 4.5 
2016-01-01 00:08:00 2016-01-01 00:08 1.1 4.1 
2016-01-01 00:09:00 2016-01-01 00:09 1.5 4.1 
2016-01-01 00:10:00 2016-01-01 00:10 1.6 4.1 
2016-01-01 00:15:00 2016-01-01 00:15 1.6 4.1 
           Time A N 

输出

Time           
2016-01-01 00:00:00 2016-01-01 00:00 1.2 4.2 
2016-01-01 00:05:00 2016-01-01 00:05 1.6 4.1 
2016-01-01 00:10:00 2016-01-01 00:10 1.6 4.1 
2016-01-01 00:15:00 2016-01-01 00:15 1.6 4.1 
+0

谢谢,但我想输出是最后五个记录的坡度值。 时间戳记从00:00开始,因此00:04是输出的第一行。 (1-> 00:00,2-> 00:01,3-> 00:02,4→00:03,5→00:04) – Lcy