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

在Power Query中按列名动态计算平均值列

Power Query 动态计算配对列平均值并替换母列

这个方案无需转置表格,适配大量列/行的场景,自动处理所有母列 -> 母列_x的配对:

核心步骤

  • 提取所有_x结尾的列,推导对应的母列名称
  • 批量遍历配对列,计算(母列值 + 对应_x列值)/2并覆盖原母列
  • 清理所有_x后缀的冗余列

完整M代码

假设你的数据源步骤名为Source,替换你现有的代码为以下内容:

let
    Source = 你的数据源步骤, // 替换成你实际的数据源引用
    // 1. 筛选_x结尾的列,提取对应母列名
    xColumns = List.Select(Table.ColumnNames(Source), each Text.EndsWith(_, "_x")),
    parentCols = List.Transform(xColumns, each Text.Remove(_, "_x")),
    // 2. 循环更新每个母列的平均值
    updatedTable = List.Accumulate(
        parentCols,
        Source,
        (tbl, colName) => Table.TransformColumns(
            tbl,
            {{colName, (currentVal, rowIndex) => (currentVal + tbl{rowIndex}[colName & "_x"]) / 2, type number}}
        )
    ),
    // 3. 删除所有_x列
    finalTable = Table.RemoveColumns(updatedTable, xColumns)
in
    finalTable

关键代码解释

  • List.Accumulate:循环遍历所有母列,逐个更新表格,避免手动写重复逻辑
  • Text.Remove(_, "_x"):精准移除列名末尾的_x,自动匹配母列
  • tbl{rowIndex}[colName & "_x"]:通过行索引直接获取对应_x列的同行值,实现逐行配对计算

效果验证

运行后会自动完成:

  • VAL_A列替换为(VAL_A + VAL_A_x)/2的结果(如示例中1和4的平均值2.5,5和8的平均值7)
  • 无配对的列(如VAL_B、VAL_C)完全保留原始值
  • 所有_x后缀列被自动删除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:06:15