Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算其他值时动态移动平均值_Python_Pandas_Dataframe - Fatal编程技术网

Python 计算其他值时动态移动平均值

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():

我整天坐在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():
        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