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

Pandas按分组计算相对于组内B='a'行ctr的百分比变动实现方法

高效实现方案

不需要遍历分组,直接用pandas分组的transform方法实现向量化计算,性能远高于手动循环拼接:

# 按A列(索引level 0)分组,提取每个分组内B='a'对应的ctr基准值,广播到分组内所有行
base_ctr = grp_df.groupby(level=0)['ctr'].transform(
    lambda group: group[group.index.get_level_values('B') == 'a'].iloc[0]
)
# 直接计算相对变化率
grp_df['relative_p'] = (grp_df['ctr'] - base_ctr) / base_ctr

说明

  1. 该方法完全走pandas内置的向量化运算,分组数量越多,性能优势越明显
  2. 不需要硬套pct_change():pct_change()的逻辑是和前一行/前N行做对比,你的需求是固定和组内特定行对比,用上述方法更直接,逻辑也更清晰
  3. 计算结果和预期输出完全一致,不需要额外处理索引或者拼接数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:36:02