Pandas 计算过去符合类似excel标准的相对行数';s COUNTIF

Pandas 计算过去符合类似excel标准的相对行数';s COUNTIF,pandas,Pandas,我有一个包含以下信息的股票数据csv Open High Low Close 0 154.55 155.54 152.90 153.41 1 156.82 158.75 155.42 156.76 2 150.21 157.44 150.15 156.33 3 147.78 149.38 146.88 149.11 4 144.25 147.28 143.90 146.27 5 142.90 144.05 140

我有一个包含以下信息的股票数据csv

   Open    High    Low      Close
0  154.55  155.54  152.90   153.41
1  156.82  158.75  155.42   156.76
2  150.21  157.44  150.15   156.33
3  147.78  149.38  146.88   149.11
4  144.25  147.28  143.90   146.27
5  142.90  144.05  140.79   143.73
>>>
我想数一数前两个高点中有多少高于当前的开放水平。 在excel中,我可以做到这一点

我想用熊猫来计算,但到目前为止,我还没有得到任何工作。 我得到的最接近的结果是使用以下函数,然后使用apply

def high_counter(day_open):
    count = 0
    for i in data['High'][:+2]:
        if i > day_open:
            count += 1
    return count
但是,这会导致比较总是从上到下开始,而不是像excel中那样从相对单元格开始

总而言之,我需要将开盘与之前的N个高点进行比较,并计算出相对开盘上方有多少个高点,无论该开盘是第一行还是第50行。要比较的高点将从开盘前一行开始,大小为N。

IIUC:

df["above"] = pd.DataFrame([df["High"].shift(-1)>df["Open"],
                            df["High"].shift(-2)>df["Open"]]).T.sum(axis=1)

# or [df["High"].shift(n)>df["Open"] for n in range(-1,-5,-1)] if you want to generalize the number n

print (df)

     Open    High     Low   Close  above
0  154.55  155.54  152.90  153.41      2
1  156.82  158.75  155.42  156.76      1
2  150.21  157.44  150.15  156.33      0
3  147.78  149.38  146.88  149.11      0
4  144.25  147.28  143.90  146.27      0
5  142.90  144.05  140.79  143.73      0
IIUC:

在尝试第二个示例时,我得到一个“值错误:值的长度与索引的长度不匹配”。
pd.DataFrame([df[“High”].shift(n)>df[“Open”]表示范围(-1,-5,-1)]。T.sum(axis=1)
是我的意思。在尝试第二个示例时,我得到一个“值错误:值的长度与索引的长度不匹配”。
pd.DataFrame([df[“High”].shift(n)>df[“Open”]表示范围内的n(-1,-5,-1)]).T.sum(axis=1)
就是我的意思。
df["above"] = pd.DataFrame([df["High"].shift(-1)>df["Open"],
                            df["High"].shift(-2)>df["Open"]]).T.sum(axis=1)

# or [df["High"].shift(n)>df["Open"] for n in range(-1,-5,-1)] if you want to generalize the number n

print (df)

     Open    High     Low   Close  above
0  154.55  155.54  152.90  153.41      2
1  156.82  158.75  155.42  156.76      1
2  150.21  157.44  150.15  156.33      0
3  147.78  149.38  146.88  149.11      0
4  144.25  147.28  143.90  146.27      0
5  142.90  144.05  140.79  143.73      0