如何使用Pandas遍历DataFrame 按上一行值乘1.1规则更新列数据
实现方案
你需要的计算逻辑本质是首行值固定,后续每行是上一行的1.1倍,直接用Pandas向量化操作即可实现,无需手动遍历DataFrame,效率更高。
完整示例代码
import pandas as pd # 1. 构造初始DataFrame(你实际使用时替换成自己的df即可) df = pd.DataFrame({ 'ID': [1, 2, 3, 4], 'Revenue': [50000, 50000, 50000, 50000] }) # 2. 先按ID排序,保证计算顺序正确(如果你的df已经按ID升序排列可跳过这步) df = df.sort_values('ID', ascending=True).reset_index(drop=True) # 3. 核心计算:首行固定,后续每行按10%增长 base_revenue = df.loc[0, 'Revenue'] # 生成指数序列,第0行对应1.1^0=1,第1行对应1.1^1,以此类推 exponent_series = pd.Series(range(len(df))) df['Revenue'] = (base_revenue * (1.1 ** exponent_series)).astype(int) # 输出结果 print(df)
输出结果
| ID | Revenue |
|---|---|
| 1 | 50000 |
| 2 | 55000 |
| 3 | 60500 |
| 4 | 66550 |
其他实现方式(累积乘积法)
如果你更习惯用累积乘积逻辑,也可以用如下写法,效果完全一致:
multipliers = pd.Series([1] + [1.1]*(len(df)-1)) df['Revenue'] = (df.loc[0, 'Revenue'] * multipliers.cumprod()).astype(int)
内容的提问来源于stack exchange,提问作者DG.Finance
相关产品推荐
相关产品推荐

