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

Power Query M实现按指定行值计算新列(利率贴现因子平移)

Power Query M 处理利率曲线贴现因子数据集解决方案

完整M代码实现

假设你的原始表名为原始贴现因子表,将以下代码粘贴到Power Query的高级编辑器中(替换表名后即可使用):

let
    // 加载原始数据
    源 = 原始贴现因子表,
    // 步骤1:按gpt_date分组,提取每组的最大Value
    分组取最大值 = Table.Group(源, {"gpt_date"}, {{"Max_Value", each List.Max([Value]), type nullable number}}),
    // 步骤2:获取基准日期(2024/10/28)的Max_Value作为除数
    基准值 = Table.SelectRows(分组取最大值, each [gpt_date] = #date(2024,10,28)){0}[Max_Value],
    // 步骤3:计算Value_rolled,排除2024/10/25的数据
    计算滚动值 = Table.AddColumn(
        Table.SelectRows(分组取最大值, each [gpt_date] <> #date(2024,10,25)),
        "Value_rolled",
        each [Max_Value] / 基准值,
        type nullable number
    ),
    // 保留需要的列(gpt_date和Value_rolled)
    整理最终表 = Table.SelectColumns(计算滚动值, {"gpt_date", "Value_rolled"})
in
    整理最终表

代码关键部分解释

  • 分组取最大值:使用Table.Group按日期分组,通过List.Max提取每组的最大Value,确保每个日期只保留一个最大值记录。
  • 基准值获取:通过Table.SelectRows筛选出2024/10/28的记录,用{0}[Max_Value]直接提取该记录的最大值,作为后续计算的除数。
  • 滚动值计算:先通过Table.SelectRows排除2024/10/25的数据,再用Table.AddColumn新增Value_rolled列,实现每个日期最大值除以基准值的计算。
  • 整理列:最后只保留需要的两列,得到最终结果表。

使用注意事项

  1. 确保原始表中的gpt_date列是日期类型,如果是文本格式,需先通过Table.TransformColumns转换为日期类型,例如:
    转换日期类型 = Table.TransformColumns(源, {{"gpt_date", Date.FromText, type date}})
    
  2. 如果基准日期(2024/10/28)不存在于数据中,代码会报错,需确认该日期的数据存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:12:06