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
相关产品推荐
相关产品推荐

