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

如何在Power Query中为列中首次出现的值标记1,其余标记0?

在Power Query中标记首次出现的值为1,其余为0

方法1:可视化界面操作(适合新手)

  • 选中要判断的User ID列,点击顶部菜单栏的「添加列」→「索引列」→「从1开始」,给每行新增一个序号列(默认叫“索引”)。
  • 再次选中User ID列,点击「转换」→「分组依据」,按以下设置填写:
    • 分组依据:选择User ID
    • 新列名:输入首次出现索引
    • 操作:选择「最小值」
    • 列:选择刚添加的「索引」
  • 点击「关闭上载」旁的下拉箭头,选择「合并查询」→「合并查询作为新查询」,在弹窗里选原数据表和刚分组好的表,匹配列都选User ID,合并类型选「左外部」。
  • 点击合并后列右侧的展开按钮,只勾选「首次出现索引」列。
  • 点击「添加列」→「自定义列」,输入公式:=if [索引] = [首次出现索引] then 1 else 0,生成标记列。
  • 最后删掉不需要的「索引」和「首次出现索引」列即可。

方法2:M语言代码直接实现(高效快捷)

打开Power Query的「高级编辑器」,替换原有代码(把Source换成你实际的数据源步骤,User ID换成你要判断的列名):

let
    Source = 你的数据源, // 替换成你实际的数据源引用
    添加索引 = Table.AddIndexColumn(Source, "索引", 1, 1),
    分组取首次索引 = Table.Group(添加索引, {"User ID"}, {{"首次出现索引", each List.Min([索引]), type number}}),
    合并回原表 = Table.NestedJoin(添加索引, {"User ID"}, 分组取首次索引, {"User ID"}, "临时表", JoinKind.LeftOuter),
    展开索引列 = Table.ExpandTableColumn(合并回原表, "临时表", {"首次出现索引"}, {"首次出现索引"}),
    生成标记列 = Table.AddColumn(展开索引列, "首次出现标记", each if [索引] = [首次出现索引] then 1 else 0),
    清理冗余列 = Table.RemoveColumns(生成标记列,{"索引", "首次出现索引"})
in
    清理冗余列

补充说明

如果你的User ID列存在空白值,不想把空白当成有效分组,可以在「添加索引」步骤后加一行过滤代码:

筛选非空白 = Table.SelectRows(添加索引, each not List.IsEmpty({[User ID]}))

然后后续步骤都基于筛选非空白这个表来操作即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:52:16