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

Power Query合并两表后数据重复异常及分组求平均需求

Power Query解决分组加索引后数据重复四次的问题

问题根源

你当前的操作逻辑是先分组生成带索引的子表,再和原表合并——这会因为分组后的子表与原表没有唯一关联键,触发笛卡尔积匹配,导致原本每组2条的数据变成2×2=4条。

正确操作方案(无需合并原表)

直接在分组流程内完成索引添加与后续计算,避免拆分后合并的步骤:

  1. 提取子组前缀
    先给数据表添加自定义列,从名称中提取子组标识(比如从car 1提取car):

    = Table.AddColumn(#"之前的步骤名", "子组前缀", each Text.BeforeDelimiter([名称], " "))
    
  2. 分组并添加组内索引
    替换原Group By代码,直接在分组时给每组添加索引(起始设为1,方便区分首次/第二次出现):

    = Table.Group(#"添加子组前缀后的步骤", {"子组前缀"}, {
        {"组内数据", each Table.AddIndexColumn(_, "出现次数", 1, 1, Int64.Type), type table}
      })
    
  3. 展开并计算平均值

    • 点击组内数据列的展开按钮,选择需要保留的列(名称、份额、出现次数)
    • 再次使用Group By,分组依据选子组前缀+出现次数,操作选「平均值」并指向份额列,即可得到每个子组首次、第二次出现的份额平均值。

更简洁的一步式方案

如果不需要保留中间索引列,可以直接在分组时完成计算,完全跳过索引与展开步骤:

= Table.Group(#"添加子组前缀后的步骤", {"子组前缀"}, {
    {"首次出现份额平均值", each List.Average(Table.FirstN(_, 1)[份额]), type number},
    {"第二次出现份额平均值", each List.Average(Table.Skip(_, 1)[份额]), type number}
  })

这段代码直接在分组时,取每组第一条数据的份额平均值、以及第二条数据的份额平均值,从根源避免重复问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 05:24:56