You need to enable JavaScript to run this app. Python下结合PRODUCT、AVERAGE公式基于流量DataFrame制作损失率表的方法
优惠活动
大模型
产品
解决方案
定价
更多

Python下结合PRODUCT、AVERAGE公式基于流量DataFrame制作损失率表的方法

Loss Rate表生成可直接复用代码

完全匹配你整理的Excel计算规则,可直接对接现有Flow Rate DataFrame使用,无需调整核心公式逻辑。

核心计算逻辑对齐说明

  • 逐格累乘规则:复现Excel中PRODUCT(当前列:$最右列)的绝对引用乘积逻辑,即每一行从对应列位置开始,向右连续乘到该行的最后一列,计算结果和Excel原公式无偏差
  • 列方向平均规则:复现Excel中AVERAGE(累乘结果行范围)的简单平均逻辑,无额外加权计算

可直接运行的代码

import pandas as pd
import numpy as np

def build_loss_rate_table(flow_rate_df: pd.DataFrame, product_row_start: int, product_row_end: int) -> pd.DataFrame:
    # 拷贝原始数据,避免修改源Flow Rate DataFrame
    loss_df = flow_rate_df.copy()

    # 逐行计算从当前列到最右列的累计乘积
    for row_pos in range(product_row_start, product_row_end + 1):
        row_arr = loss_df.iloc[row_pos].to_numpy(dtype=np.float64)
        # 反向累计乘积后反转,实现从当前列到最右列的乘积效果
        right_cumprod = np.cumprod(row_arr[::-1])[::-1]
        loss_df.iloc[row_pos] = right_cumprod

    # 计算每列的累乘结果平均值,对应Excel第13行的平均行
    col_avg = loss_df.iloc[product_row_start:product_row_end + 1].mean(axis=0)
    # 将平均行插入到累乘计算行的下一行(对应Excel平均行的位置)
    loss_df = pd.concat([
        loss_df.iloc[:product_row_end + 1],
        pd.DataFrame([col_avg], columns=loss_df.columns, index=[product_row_end + 1]),
        loss_df.iloc[product_row_end + 1:]
    ])

    return loss_df

使用方法

  • 参数转换:Excel行号从1开始计数,使用前需转换为Python的0起始索引。比如你提到的Excel中累乘范围是第8行到第12行,对应Python的索引就是7到11,直接传入对应参数即可:
    # 替换为你自己的Flow Rate DataFrame变量名
    final_loss_table = build_loss_rate_table(
        flow_rate_df=your_flow_rate_dataframe,
        product_row_start=7,
        product_row_end=11
    )
    
  • 结果校验:可随机抽取单个单元格的计算结果和Excel公式结果做对比,因累乘、平均的计算逻辑和Excel完全一致,数值偏差会控制在常规浮点误差范围内

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 08:54:01