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

