Power Query合并两表后数据重复异常及分组求平均需求
Power Query解决分组加索引后数据重复四次的问题
问题根源
你当前的操作逻辑是先分组生成带索引的子表,再和原表合并——这会因为分组后的子表与原表没有唯一关联键,触发笛卡尔积匹配,导致原本每组2条的数据变成2×2=4条。
正确操作方案(无需合并原表)
直接在分组流程内完成索引添加与后续计算,避免拆分后合并的步骤:
提取子组前缀
先给数据表添加自定义列,从名称中提取子组标识(比如从car 1提取car):= Table.AddColumn(#"之前的步骤名", "子组前缀", each Text.BeforeDelimiter([名称], " "))分组并添加组内索引
替换原Group By代码,直接在分组时给每组添加索引(起始设为1,方便区分首次/第二次出现):= Table.Group(#"添加子组前缀后的步骤", {"子组前缀"}, { {"组内数据", each Table.AddIndexColumn(_, "出现次数", 1, 1, Int64.Type), type table} })展开并计算平均值
- 点击
组内数据列的展开按钮,选择需要保留的列(名称、份额、出现次数) - 再次使用Group By,分组依据选
子组前缀+出现次数,操作选「平均值」并指向份额列,即可得到每个子组首次、第二次出现的份额平均值。
- 点击
更简洁的一步式方案
如果不需要保留中间索引列,可以直接在分组时完成计算,完全跳过索引与展开步骤:
= Table.Group(#"添加子组前缀后的步骤", {"子组前缀"}, { {"首次出现份额平均值", each List.Average(Table.FirstN(_, 1)[份额]), type number}, {"第二次出现份额平均值", each List.Average(Table.Skip(_, 1)[份额]), type number} })
这段代码直接在分组时,取每组第一条数据的份额平均值、以及第二条数据的份额平均值,从根源避免重复问题。
内容的提问来源于stack exchange,提问作者New2905
相关产品推荐
相关产品推荐

