如何用Pandas基于公式通过上一行值计算当前行剩余量
解决方案
你可以直接通过计算Received与Issued差值的累计和来得到Remaining列,这正好匹配你要求的递推逻辑:
import pandas as pd # 构造原始DataFrame(替换成你自己的数据集即可) data = { 'Received': [5, 10, 0, 0, 20, 0, 25, 30], 'Issued': [0, 0, 1, 2, 0, 3, 0, 4] } df = pd.DataFrame(data) # 生成Remaining列 df['Remaining'] = (df['Received'] - df['Issued']).cumsum() print(df)
运行后得到的结果完全符合你的目标DataFrame:
| Received | Issued | Remaining |
|---|---|---|
| 5 | 0 | 5 |
| 10 | 0 | 15 |
| 0 | 1 | 14 |
| 0 | 2 | 12 |
| 20 | 0 | 32 |
| 0 | 3 | 29 |
| 25 | 0 | 54 |
| 30 | 4 | 80 |
原理说明:你要求的remaining = previous(remaining) + received - issued本质就是从第一行开始,将每行的received - issued依次累加,pandas的cumsum()方法正好实现这个累计求和逻辑,不需要用shift或复杂条件判断。
内容的提问来源于stack exchange,提问作者Doyino Delima
相关产品推荐
相关产品推荐

