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

基于首行ID值为重复记录生成Key列的技术需求

为重复记录生成组首行ID作为Key列

依据Name和State字段判定重复记录,为每组重复记录新增Key列,Key值取对应组的首行ID值。

原始数据表

IDNameState
1001AlexCA
1002AlexCA
1003SmithWV
1004SmithWV

期望结果表

KeyIDNameState
10011001AlexCA
10011002AlexCA
10031003SmithWV
10031004SmithWV

解决方案

1. SQL实现

方法一:用MIN()函数(适用于ID递增场景)

通过窗口函数按Name和State分组,取组内最小ID作为Key:

SELECT 
    MIN(ID) OVER (PARTITION BY Name, State) AS Key,
    ID,
    Name,
    State
FROM your_table;

方法二:用FIRST_VALUE()函数(严格取组内首行ID)

若ID无递增规则,需保留原始顺序取首行ID,可指定排序规则:

SELECT 
    FIRST_VALUE(ID) OVER (PARTITION BY Name, State ORDER BY ID) AS Key,
    ID,
    Name,
    State
FROM your_table;

2. Python Pandas实现

import pandas as pd

# 构建原始数据
df = pd.DataFrame({
    'ID': [1001, 1002, 1003, 1004],
    'Name': ['Alex', 'Alex', 'Smith', 'Smith'],
    'State': ['CA', 'CA', 'WV', 'WV']
})

# 按分组取首行ID生成Key列
df['Key'] = df.groupby(['Name', 'State'])['ID'].transform('first')

# 调整列顺序匹配期望结果
df = df[['Key', 'ID', 'Name', 'State']]

3. Excel实现

  1. 先对数据排序:选中数据区域,点击「数据」→「排序」,依次按Name、State、ID升序排列,确保每组首行为最小ID;
  2. 在空白列(如D列)输入公式,D2单元格:
    =IF(AND(B2=B1,C2=C1),D1,A2)
    
  3. 下拉填充公式,最后将D列重命名为Key并调整列顺序即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:42:58