You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame如何采用向量化方法免循环动态计算更新Calculated列

实现方案

你的需求本质是累积除法运算,可以用pandas的cumprod()累积乘积方法实现完全向量化操作,不需要任何循环。

完整代码

import pandas as pd
import numpy as np

# 构造原始数据
data = {'Product':['A', 'B', 'C', 'D'],
        'Price':[10, 20, 25, 30],
        'Calculated':[10, np.nan, np.nan, np.nan]}
df = pd.DataFrame(data)

# 向量化计算逻辑
init_val = df.loc[0, 'Calculated']
df['Calculated'] = init_val * (1/df['Price']).shift(fill_value=1).cumprod()

逻辑说明

  • 首先取出第一行的初始计算值init_val = 10
  • df['Price'].shift(fill_value=1):把Price列整体下移一行,第一行空出来的位置填1,处理后每一行的值就对应原始数据里上一行的Price
  • 对每个值取倒数,再调用cumprod()做累积乘积,得到每一行相对于初始值的缩放倍数
  • 最后用初始值乘以缩放倍数序列,直接赋值给Calculated列即可得到结果

运行结果

ProductPriceCalculated
A1010.000
B201.000
C250.050
D300.002

该方案是纯向量化实现,数据量越大性能优势越明显,远快于循环实现。

内容的提问来源于stack exchange,提问作者Lopez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:15:03