2016-03-08 22 views
-2

我真的很陌生,並且試圖通過學習Python來混淆我的方式。 我在寫一些代碼來處理來自Yahoo Finance的數據。它被導入熊貓數據幀在熊貓數據框中引用多行

我想執行一個簡單的計算,引用多個數據幀的行。我不認爲我可以做到這一點,iterrows一次覆蓋一行。

下面是我的數據框(索引是日期)。最後一行是我的買入(1)或賣出(-1)的觸發器,但買入/賣出價格必須來自下一行。

所以在這個例子中,2月22日是我的信號日。然後,我需要使用2月23日的公開價格進行位置計算等。根據信號列中的值訪問df中的數據的最佳方式(以前使用iterrows創建)是什麼?我不能在迭代迭代期間這樣做,因爲它只會一次查看一行(我認爲)。

2016-02-19 117.580002 112.619343 108.836458 109.025525 2.025102    
2016-02-22 115.489998 112.892739 109.097382 109.089848 2.039591  1 
2016-02-23 117.220001 113.304859 109.415916 109.170745 2.028632  1 
2016-02-24 117.610001 113.714873 109.737252 109.254718 2.089769  1 

任何想法將不勝感激。

乾杯\ MP

+0

你可能想讀這:http://stackoverflow.com/questions/15315452/selecting-with-complex-criteria-from-pandas-dataframe和搜索在本頁選擇:http:// pandas。 pydata.org/pandas-docs/stable/cookbook.html – MaxU

+0

謝謝,現在就來看看吧 – MGP

回答

0

如果信號欄是拉斯之一,你要選擇的行,其中該列中的值是1:

df.loc[df.iloc[:, -1] == 1] 

我最好使用列名如果我知道的話。

+0

這個問題正在信號列中第一次出現1以下的行上進行。 – MGP

+0

基本上按照索引(時間序列)的順序搜索'位置'列,直到出現1.然後返回位於下一行'close'列中的值。我只想在第一次出現1時返回這個值。首先創建DataFrame可能有更好的方法,但這是基於Yahoo Finance的導入。 – MGP