Python 计算其他值时动态移动平均值
我整天坐在RSI计算器上编程,在前面的问题中,我也意识到有另一种更简单的方法来计算RSI。但现在我只想成功,这也是一个学习的过程;-) 但现在,我必须根据数据帧中的增益计算移动平均值Python 计算其他值时动态移动平均值,python,pandas,dataframe,Python,Pandas,Dataframe,我整天坐在RSI计算器上编程,在前面的问题中,我也意识到有另一种更简单的方法来计算RSI。但现在我只想成功,这也是一个学习的过程;-) 但现在,我必须根据数据帧中的增益计算移动平均值 def rsi_calculator(df): last_adj_close = float(df. loc[0, 'Adj Close']) gain = float(0) loss = float(0) for col, row in df.iterrows():
def rsi_calculator(df):
last_adj_close = float(df. loc[0, 'Adj Close'])
gain = float(0)
loss = float(0)
for col, row in df.iterrows():
change = float((col, row["Adj Close"])[1])-last_adj_close
row['Change'] = change
last_adj_close = float((col, row["Adj Close"])[1])
if change > 0:
gain = abs(change)
loss = float(0)
elif change < 0:
loss = abs(change)
gain = float(0)
else:
loss = float(0)
gain = float(0)
row['Gain'] = gain
row['Loss'] = loss
avg_gain = row['Gain'].rolling(windows=14).mean
row['AVG Gain'] = avg_gain
我在这里也试过这个的不同版本
avg_gain = (col, row["Adj Close"])[1].rolling(window=14).mean
但是相同的错误消息,有人能帮忙吗?当您使用iterrows时,
行['Gain']
是当前行中给定列的单个值,在本例中是单个浮点数rolling()
是指一次应用于整列或整行,而不是单个值是的,我自己几乎意识到了这一点,但我只是很难根据我当前的行位置找出如何使用windue返回该行它根本不是;t使用.rolling
在循环中执行的操作。您可以像迭代任何其他数据结构(列表等)时那样存储值并自己计算,或者在iterrows
之外使用内置函数,只需执行df['AVG Gain']=df['Gain'].rolling(windows=14)。意思是
avg_gain = (col, row["Adj Close"])[1].rolling(window=14).mean