python将使用以前的计算值

python将使用以前的计算值,python,pandas,calculated-columns,shift,Python,Pandas,Calculated Columns,Shift,我是python新手,我有一个无法解决的问题。所以,我需要你的帮助。 我有一个数据帧df,有两列:Close_M和Close_AA。 重点是,我想计算两个新列Resultat_M和Resultat_AA,如下所示: for i in symbol_list: df['Result'+'_'+i] = (df['Close'+'_'+i] / df ['Close'+'_'+i].shift(1) ) * df['Result'+'_'+i].shift(1)` 我想初始化Resulta

我是python新手,我有一个无法解决的问题。所以,我需要你的帮助。 我有一个数据帧df,有两列:Close_M和Close_AA。 重点是,我想计算两个新列Resultat_M和Resultat_AA,如下所示:

for i in symbol_list:
    df['Result'+'_'+i] = (df['Close'+'_'+i] / df ['Close'+'_'+i].shift(1) ) * df['Result'+'_'+i].shift(1)`
我想初始化Resultat列的值为100

输入数据帧

 Close_M 

  10         
   5         
  12         
  14      

Close_AA

8         
9         
10      
7      
Resultat_M

 100       
 50        
 120         
 140

Resultat_AA  

 100         
 112,5       
 125         
 87,5  
预期输出数据帧

 Close_M 

  10         
   5         
  12         
  14      

Close_AA

8         
9         
10      
7      
Resultat_M

 100       
 50        
 120         
 140

Resultat_AA  

 100         
 112,5       
 125         
 87,5  
例如结果M,50=(5/10)*100; 120 = (12/5)*50;

但是我的代码不起作用。你知道怎么做吗? 谢谢

更正后,我有相同的错误:

当我运行您在回答中给出的代码时的输出:

我拥有的输出数据帧:

Resultat_AA

Nan

112,5

111,11

70

Resultat_M

Nan

50

240

116,6666667
为什么我没有得到预期的结果?我认为除法后,它会将每行乘以100,而不是像我所希望的那样乘以之前计算的值

  • 使用初始值预先设置结果列:

    df ['Result_' + i] = 100
    
  • 计算结果列中的实际值

    df['Result'+'_'+i] = (df['Close'+'_'+i].iloc[1:] / df ['Close'+'_'+i].iloc[:-1] ) * df['Result'+'_'+i].iloc[:-1]
    
  • 请注意,第一个术语被迭代到最后一个值之前

  • 使用初始值预先设置结果列:

    df ['Result_' + i] = 100
    
  • 计算结果列中的实际值

    df['Result'+'_'+i] = (df['Close'+'_'+i].iloc[1:] / df ['Close'+'_'+i].iloc[:-1] ) * df['Result'+'_'+i].iloc[:-1]
    

  • 请注意,第一个术语被迭代到最后一个值之前。

    感谢您的回复。在开始计算之前,如何将列结果的第一个值初始化为100?
    df['Result']。iloc[0]=100
    我得到一个错误。请参阅上面的问题中添加的python错误链接。错误告诉您,数据帧中没有
    Result\M
    列。因此,在设置列名称时,应该会出现一些错误。你能提供更多的代码并指出它失败的地方吗?UPD:BTW,您的示例和代码中的列的名称不同-
    Resultat
    Result
    -这不是原因吗?更正后,我有相同的错误,我添加了一个screeshot,显示我在pythonThank you中运行的响应。在开始计算之前,如何将列结果的第一个值初始化为100?
    df['Result']。iloc[0]=100
    我得到一个错误。请参阅上面的问题中添加的python错误链接。错误告诉您,数据帧中没有
    Result\M
    列。因此,在设置列名称时,应该会出现一些错误。你能提供更多的代码并指出它失败的地方吗?UPD:顺便说一句,您的示例和代码中的列的名称不同-
    Resultat
    Result
    -这不是原因吗?更正后,我有相同的错误,我添加了一个我在python中运行的脚本