pandas基于初始值计算累计乘积,求可替代循环的高效实现方案
解决方案
你要实现的是累计乘积计算,直接使用pandas/numpy内置的向量化累计乘积函数cumprod即可,完全不需要写Python循环,底层为C实现,处理百万级以上行的数据集时性能比原生循环高数百倍。
核心代码仅需一行:
df['Total'] = 1000 * df['Change'].cumprod()
完整可运行示例:
import pandas as pd import numpy as np changes = [0.97,1.02,1.1,0.88,1.01 ] df = pd.DataFrame() df['Change'] = changes # 替换原有循环的一行代码 df['Total'] = 1000 * df['Change'].cumprod() print(df)
运行输出和你原有循环结果完全一致:
Change Total 0 0.97 970.000000 1 1.02 989.400000 2 1.10 1088.340000 3 0.88 957.739200 4 1.01 967.316592
如果需要处理超大规模数据集,可以直接调用numpy层面的cumprod,减少pandas的开销,写法如下:
df['Total'] = 1000 * np.cumprod(df['Change'].to_numpy())
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

