获取所有满足条件的行之前的第n行索引

Get rows n index prior to all the rows that meet the criteria

我编写了一个程序,可以使用 pandas 根据股票日数据(开盘价、最高价、最低价、收盘价)查找特定的烛台形态。现在我想看看在形态出现后一、两天或三天的平均价格变化是多少。我怎样才能获得模式后的行?假设我想要所有行都带有锤形蜡烛,我可以这样得到它们。

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

然后我想要前一天(后一天)的行,以便将当天的收盘价与前一天(锤子日)进行比较,我怎样才能让 shift 给我锤子前的实际行那一行很可能不符合标准?如果我做类似

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

我最终得到了下一个锤子的收盘价,而不是我需要的紧跟在锤子之后的那一行。 本质上,我需要在所有满足条件

的行之前先索引行

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

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

对于我的特殊情况,以下代码解决了从锤形蜡烛后的第二天抓取 'Close' 列并将其放入列中以供将来比较的问题。

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