python pandas使用以前的计算值

时间:2015-10-21 10:02:48

标签: 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)`

我想初始化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  

例如Resultat_M,50 =(5/10)* 100;                      120 =(12/5)* 50;

python error viewed

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

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

See a screenshot of what i'm running in python

当我运行你在答案中给我的代码时的输出:

输出数据框我有:

Resultat_AA

Nan

112,5

111,11

70

Resultat_M

Nan

50

240

116,6666667

为什么我没有预期的结果?我认为在除法之后,它将每一行乘以100,而不是按照我想要的计算前一个值。

1 个答案:

答案 0 :(得分:0)

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

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

    df['Result'+'_'+i] = (df['Close'+'_'+i].iloc[1:] / df ['Close'+'_'+i].iloc[:-1] ) * df['Result'+'_'+i].iloc[:-1]
    
  3. 请注意,第一个术语正在迭代到预先持续的值。