我是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;
但我的代码不起作用。你知道怎么做吗? 感谢
更正后,我有同样的错误:
当我运行你在答案中给我的代码时的输出:
输出数据框我有:
Resultat_AA
Nan
112,5
111,11
70
Resultat_M
Nan
50
240
116,6666667
为什么我没有预期的结果?我认为在除法之后,它将每一行乘以100,而不是按照我想要的计算前一个值。
答案 0 :(得分:0)
使用初始值预先设置结果列:
df ['Result_' + i] = 100
计算结果列中的实际值
df['Result'+'_'+i] = (df['Close'+'_'+i].iloc[1:] / df ['Close'+'_'+i].iloc[:-1] ) * df['Result'+'_'+i].iloc[:-1]
请注意,第一个术语正在迭代到预先持续的值。