Python Pandas:Pandas数据框下的一些查找功能

Python Pandas:Pandas数据框下的一些查找功能,python,pandas,Python,Pandas,Python代码: import numpy as np import pandas as pd import matplotlib.pyplot as plt from pandas_datareader import data as wb stock='3988.HK' df = wb.DataReader(stock,data_source='yahoo',start='2018-07-01') rsi_period = 14 chg = df['Close'].diff(1)

Python代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas_datareader import data as wb

stock='3988.HK'

df = wb.DataReader(stock,data_source='yahoo',start='2018-07-01')

rsi_period = 14

chg = df['Close'].diff(1)

gain = chg.mask(chg<0,0)
df['Gain'] = gain

loss = chg.mask(chg>0,0)
df['Loss'] = loss

avg_gain = gain.ewm(com = rsi_period-1,min_periods=rsi_period).mean()
avg_loss = loss.ewm(com = rsi_period-1,min_periods=rsi_period).mean()

df['Avg Gain'] = avg_gain
df['Avg Loss'] = avg_loss

rs = abs(avg_gain/avg_loss)

rsi = 100-(100/(1+rs))

df['RSI'] = rsi
问题: 如果“RSI”低于25,我想找出以下14行的“Close”最大值。 例如 我发现2018-09-12的RSI为21.763243,低于25。 然后,我想找出2018-09-13至2018-10-04(14行)之间的最大接近点。 最终答案应该是3.52。 我可以在Python中执行这个查找函数吗

更新:

subdf = df.iloc[51:51+14]
它能自动变成。 例如 根据公式,我们知道第50行和第51行低于25行。 但是在这个阶段,我需要手动输入50和51。 如果python能为我做到这一点,只需在下面的n中填写50和51即可:

subdf = df.iloc[n:n+14]

最后,结果将是3.52,3.52。

首先,您需要添加新索引以获得连续的行号:

df = df.reset_index()
以下是带有
RSI的行
df = df.reset_index()
df[df['RSI']<25]
         Date  High   Low  Open  Close     Volume  Adj Close  Gain  Loss  Avg Gain  Avg Loss        RSI
50 2018-09-11  3.40  3.36  3.36   3.36  231749076       3.36   0.0 -0.03  0.006552 -0.020400  24.310377
51 2018-09-12  3.36  3.31  3.35   3.32  377546352       3.32   0.0 -0.04  0.006073 -0.021833  21.763243
subdf = df.iloc[51:51+14]
subdf['Close'].max()
3.52
df.iloc[51:51+14]['Close'].max()