如何基于DataFrame中的每日涨跌幅计算累计金额?
问题描述
原始DataFrame如下:
| date | percent_change |
|---|---|
| 2022/12/01 | 2 |
| 2022/12/02 | -1 |
| 2022/12/02 | 3 |
假设初始值为100,需新增一列cumulative value展示截至当前行的累计值,预期输出如下:
| date | percent_change | cumulative value |
|---|---|---|
| 2022/12/01 | 2 | 102 |
| 2022/12/02 | -1 | 100.98 |
| 2022/12/02 | 3 | 104.0094 |
解决方案
可以利用Pandas的cumprod()方法计算累计乘积,结合百分比转系数的逻辑实现需求,代码如下:
import pandas as pd # 构造原始数据 df = pd.DataFrame({ 'date': ['2022/12/01', '2022/12/02', '2022/12/02'], 'percent_change': [2, -1, 3] }) # 计算累计值 initial_value = 100 df['cumulative value'] = initial_value * (1 + df['percent_change'] / 100).cumprod() # 输出结果 print(df)
逻辑说明
(1 + df['percent_change'] / 100):将百分比变化转换为增长系数,例如2%对应1.02,-1%对应0.99;cumprod():对增长系数列计算累计乘积,得到从初始值开始的累计增长倍数;- 乘以初始值100后,即可得到每行的累计值。
内容的提问来源于stack exchange,提问作者shyam yadav
相关产品推荐
相关产品推荐

