这是我的dataframe:
df = pd.DataFrame({'a': [10, 20, 50], 'b': [5, -2, 20]})
这是我想要的输出:
a b c
0 10 5 105
1 20 -2 20.58
2 50 20 12.348
我有一个初始值1000。c
的第一行是这样计算的:
(1000* 0.1)* 1.05
列a
和b
是百分比。也就是说,1000的10%是100,然后我想把100加上5%,这样第一行就是105。然后对于c
的下一行,我想计算105的20%,即21,然后减去2%,即20.58。
我试过这个代码,但它不工作:
df['b'] = df['b'] / 100
df['c'] = (df.a / 100).cumprod() * 1000
df['c'] = df.c * (1 + df.b)
请随意编辑标题。我想要更具体的东西,但无法弄清楚。
2条答案
按热度按时间xpcnnkqh1#
你也可以用
cumprod
来实现:基本上,对于每一行,您需要
a
+b
在a
上的百分比。因此,a + a * b
首先使用/ 100
转换为百分比。wnrlj8wa2#
尝试:
图纸: