kzt*_*ztd 2 python lambda numpy pandas
在给定一系列价格数据的情况下,我想找到股票的最大可能回报.鉴于您只能以未来的价格出售,我认为我需要在每一行上设置最大的未来价格:
def maxf(idx):
return prc[idx:].bid.max()
prc['MaxF'] = prc.index.map(lambda x: maxf(x))
Run Code Online (Sandbox Code Playgroud)
这段代码确实有效,但需要比pandas.cummax()更长的时间.是否有直接的矢量方式来编码?
forward cummax是reverse cummax的同义词:
prc.bid[::-1].cummax()[::-1]
Run Code Online (Sandbox Code Playgroud)
numpy
@Boud 的答案的一个版本是
prc.assign(MaxF=np.maximum.accumulate(prc.bid.values[::-1])[::-1])
Run Code Online (Sandbox Code Playgroud)
考虑数据框 prc
np.random.seed([3,1415])
prc = pd.DataFrame(dict(bid=np.random.rand(10)))
prc
bid
0 0.444939
1 0.407554
2 0.460148
3 0.465239
4 0.462691
5 0.016545
6 0.850445
7 0.817744
8 0.777962
9 0.757983
Run Code Online (Sandbox Code Playgroud)
然后:
prc.assign(MaxF=np.maximum.accumulate(prc.bid.values[::-1])[::-1])
bid MaxF
0 0.444939 0.850445
1 0.407554 0.850445
2 0.460148 0.850445
3 0.465239 0.850445
4 0.462691 0.850445
5 0.016545 0.850445
6 0.850445 0.850445
7 0.817744 0.817744
8 0.777962 0.777962
9 0.757983 0.757983
Run Code Online (Sandbox Code Playgroud)
小数据计时
归档时间: |
|
查看次数: |
452 次 |
最近记录: |