有一个简单的问题,我没有找到一个简单的答案。例如,可以使用此数据框:
A = pd.Series([0.1,-0.2,0.14,0.12,-0.11])
B = pd.Series([1.0,3.0,2.0,6.0,9.0])
df = pd.DataFrame({'A':A,'B':B})
我现在想创建一个C列,如下所示:
C_i = A_i*(B_i+C_{i-1})
即。计算C的值我需要先前计算的C值。这可以通过简单的for循环来完成,但我想使用map,apply或其他一些pandas功能。这可以通过简单的方式完成吗?
我在电子表格中对其进行了测试,这就是我要找的内容:
A B C
0,1 1 0,10000
−0,2 3 −0,62000
0,14 2 0,19320
0,12 6 0,74318
−0,11 9 −1,07175
答案 0 :(得分:0)
获得此目的的一种方法:
df['C'] = df.A * df.B
df['C'] = df.C + (df.A * df.C.shift().fillna(0))
df
哪个收益率:
A B C
0 0.10 1 0.100
1 -0.20 3 -0.620
2 0.14 2 0.196
3 0.12 6 0.754
4 -0.11 9 -1.069
这看起来像你想要的。