2017-04-20 7 views
2

私は、一連の価格データが与えられた場合、可能な限り最大限のリターンを探したいと思っています。あなたが唯一の将来の価格で売ることができることを考えると、私はそれぞれの行に最大の将来の価格を配置する必要がありますする必要があると思う:パンダ・フォワード・クマックス

def maxf(idx): 
    return prc[idx:].bid.max() 

prc['MaxF'] = prc.index.map(lambda x: maxf(x)) 

このコードでは、作業を行いますが、それは()pandas.cummaxよりもはるかに長い時間がかかります。これをコード化する直接的な方法はありますか?

答えて

5
前方

cummaxは逆cummaxの同義語です:Boudの答え@の

prc.bid[::-1].cummax()[::-1] 
+2

/は – piRSquared

+1

マイナー:-)トータルサポートで....拳を振る:これは私たちがしているにもかかわらず、フレーム全体を反転させます入札欄のみを使用します。たぶん '.bid'を左に動かすでしょうか? – DSM

+0

@DSM完了、ありがとう! – Boud

4

numpyバージョンは

prc.assign(MaxF=np.maximum.accumulate(prc.bid.values[::-1])[::-1]) 

はその後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 

データフレームを検討することになります。

を 小さなデータオーバー
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 

タイミング

enter image description here

関連する問題