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

Pandas DataFrame 中将连续同值为组的重复ID替换为未使用最小数值

完整实现代码

import numpy as np
import pandas as pd

# 生成原始DataFrame
df = pd.DataFrame({'ID': [1, 1, 2, 5, 5, 6, 1, 1, 2, 2, 5, 9, 1, 2, 3, 3, 3, 5]})

# 步骤1:标记连续相同ID的分组
df['group'] = df['ID'].ne(df['ID'].shift()).cumsum()

# 步骤2:构建分组到替换值的映射
used_values = set()
group_replace_map = {}
for group_id, original_id in df.groupby('group')['ID'].first().items():
    if original_id not in used_values:
        replace_val = original_id
    else:
        # 查找最小的未使用正整数
        replace_val = 1
        while replace_val in used_values:
            replace_val += 1
    group_replace_map[group_id] = replace_val
    used_values.add(replace_val)

# 步骤3:应用映射得到最终结果
df['ID'] = df['group'].map(group_replace_map)
df = df.drop('group', axis=1)

print(df)

运行输出

ID
0    1
1    1
2    2
3    5
4    5
5    6
6    3
7    3
8    4
9    4
10   7
11   9
12   8
13  10
14  11
15  11
16  11
17  12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:36:01