【发布时间】:2016-07-29 06:55:53
【问题描述】:
我有快速的时间范围(tick 数据),并想检查该值是否等于 1 分钟时间范围内滚动最大值的最高价格。
刻度数据为:
2016-06-27 08:30:00 4243.00
2016-06-27 08:30:00 4243.00
2016-06-27 08:30:00 4243.00
2016-06-27 08:30:00 4243.00
2016-06-27 08:30:00 4243.00
2016-06-27 08:30:00 4243.00
2016-06-27 08:30:00 4243.00
2016-06-27 08:30:00 4242.75
2016-06-27 08:30:00 4242.75
2016-06-27 08:30:00 4242.75
2016-06-27 08:30:00 4242.75
2016-06-27 08:30:00 4242.75
2016-06-27 08:30:00 4242.75
2016-06-27 08:30:00 4242.75
2016-06-27 08:30:00 4242.75
2016-06-27 08:30:00 4242.75
2016-06-27 08:30:00 4242.75
2016-06-27 08:30:00 4242.50
2016-06-27 08:30:00 4242.50
2016-06-27 08:30:00 4242.50
我使用以下方法计算 1 分钟时间范围内的滚动最大值:
rol=ntick.Last.resample('1min').max().rolling(center=False,window=4).max()
但是检查报价数据中的值是否等于 rol 中的滚动最大值的最快方法是什么?
我对 Python 还是很陌生,所以我只能以非常慢的方式使用循环:
mask=[]
for x in range(0,len(ntick)):
mask.append(ntick.Last[x]==rol[ntick.index[x].replace(second=0)])
然后将掩码应用为 ntick['mask']=mask
这可行,但效率不高。任何提示如何更好地做到这一点?
编辑:
列表理解而不是循环使过程快 3 倍:
mask=[ntick.Last[x]==rol[ntick.index[x].replace(second=0)] for x in range(0,len(ntick))]
但仍然想知道是否有更好的方法。
【问题讨论】: