Pandas 计算过去符合类似excel标准的相对行数';s COUNTIF
我有一个包含以下信息的股票数据csvPandas 计算过去符合类似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
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