在符合条件的所有行之前获取第n行索引

时间:2019-12-23 19:20:43

标签: python pandas jupyter-notebook candlestick-chart

我编写了一个程序,该程序使用大熊猫根据股票的当日数据(开盘价,最高价,最低价,收盘价)查找特定的烛台图案。现在,我想看看模式出现后一两天或三天的平均价格变化是多少。如何获得模式后的行?假设我希望所有行都带有锤击蜡烛,我可以像这样得到它们。

data[data['Hammer'] == True]
    Symbol  Date        Open    High    Low     Close   Volume  Day Close   Hammer
4   AMZN    2019-12-16  1767.00 1769.50 1757.05 1769.21 3149300    Up        True
10  AMZN    2019-12-06  1751.20 1754.40 1740.13 1751.60 3119900    Up        True
41  AMZN    2019-10-23  1761.30 1770.05 1742.00 1762.17 2190300    Up        True
55  AMZN    2019-10-03  1713.00 1725.00 1685.06 1724.42 3624300    Up        True
66  AMZN    2019-09-18  1817.04 1822.06 1795.50 1817.46 2536000    Up        True
82  AMZN    2019-08-26  1766.91 1770.00 1743.51 1768.87 3085300    Up        True

然后,我想要前一行(后一天)的行,以便将该天的收盘价与前一天(汉默日)的价格进行比较,当行时,我该如何转移到锤子之前给我实际的行将最有可能不符合标准?如果我做类似的事情

data.loc[data['Hammer'] == True]['Close'].shift()

最后我要关闭下一个锤子,而不是紧随锤子之后的那排,这正是我需要的。 本质上,我需要在符合条件的所有行之前的第一个索引

1 个答案:

答案 0 :(得分:0)

我想出了答案,如果有人遇到类似问题,这就是我所做的。 要在过滤器(hammer == True)之前或之后获取行,必须在过滤器之前应用移位。

data.shift()[data['Hammer'] == True]

对于我的特殊情况,以下代码解决了从锤击蜡烛发生的第二天开始抓取“关闭”列并将其放在列中以供将来比较的问题。

data['One Day After Hammer'] = data.shift()[data['Hammer'] == True]['Close']