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

Pandas前后向扩展窗口自定义标量积计算实现问题咨询

解决方案

直接通过预计算累计和实现,全程向量化操作,性能远高于循环或滚动窗口方案,代码如下:

import pandas as pd

if __name__ == "__main__":
    # 构造示例DataFrame
    df = pd.DataFrame({'value': list(range(1, 11, 1))}) * 10
    limit = 50
    df['multiplier'] = 1 + (df['value'] < limit) * 0.666

    # 核心计算逻辑
    ## 预计算每行value和multiplier的乘积
    val_mul = df['value'] * df['multiplier']
    ## 计算value列全局总和
    total_val = df['value'].sum()
    ## 计算两个累计和序列
    cumsum_val_mul = val_mul.cumsum()
    cumsum_val = df['value'].cumsum()
    ## 按规则计算Total,保留1位小数对齐示例
    df['Total'] = (cumsum_val_mul + (total_val - cumsum_val)).round(1)

    # 可选:添加示例中从1开始的Index列
    df.insert(0, 'Index', df.index + 1)
    
    print(df)

计算逻辑说明

我们可以将需求中的规则拆解为两个部分的和:

  • 当前行及之前所有行的value * multiplier累计和:直接对乘积列做cumsum()即可得到
  • 当前行之后所有行的value之和:等于全局value总和减去到当前行为止的value累计和

两个结果相加直接得到每行的Total值,不需要额外调用滚动窗口或pandas.api.indexers相关接口,时间复杂度为O(n),适合处理任意量级的数据集,运行输出结果和预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:06:01