2016-03-08 50 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