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

Power Query多键分组:按子组与出现次数计算平均份额

解决方案(Pandas实现)

假设你的数据结构如下(模拟你的输入场景):

import pandas as pd

data = {
    "Name": ["car 1", "car 1", "car 2", "car 2", "bike 1", "bike 1", "bike 2", "bike 2"],
    "份额": [10, 15, 20, 25, 5, 8, 12, 14],
    "occurrence": [1, 2, 1, 2, 1, 2, 1, 2]  # 你已创建的出现次数索引
}
df = pd.DataFrame(data)

步骤1:提取子组标识(Name的第一部分)

从Name列拆分出子组关键词(如car、bike):

df["子组"] = df["Name"].str.split(" ").str[0]

步骤2:分组计算对应均值

直接按子组和occurrence双维度分组,对份额列求均值,避免出现列丢失或重复行问题:

# 转成宽表(第一次、第二次均值各占一列,更直观)
result_wide = df.groupby(["子组", "occurrence"])["份额"].mean().unstack()
  • groupby(["子组", "occurrence"]):同时按子组和出现次数分组,精准区分每个子组下的第一次、第二次出现记录
  • .mean():对每组的份额值计算平均值
  • .unstack():将长表格式转为宽表,让结果更易读

运行后得到的宽表结果:

1     2
子组          
bike  8.5  11.0
car   15.0 20.0

如果你偏好长表格式,去掉.unstack()即可:

result_long = df.groupby(["子组", "occurrence"])["份额"].mean().reset_index()

长表结果:

子组  occurrence   份额
0  bike           1   8.5
1  bike           2  11.0
2   car           1  15.0
3   car           2  20.0

你之前踩坑的原因

  • 仅按子组分组,未加入occurrence维度,无法区分第一次/第二次出现的均值,合并时自然会产生重复行
  • GroupBy时未指定聚合列(如只写groupby("子组")而未明确选择份额),会默认聚合所有数值列,导致非目标列丢失或混乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 21:52:32