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

Pandas不使用for循环/iterrows为两列唯一组合生成标识列的实现方法

实现方案

直接使用pandas内置的groupby.ngroup()方法即可一行完成需求,无需手动遍历:

import pandas as pd

df = pd.DataFrame({'a': [1, 2, 3, 4, 3, 4, 1, 2], 'b': [3, 2, 1, 2, 3, 2, 3, 2]})

# 核心实现代码
df['unique'] = 'unique' + df.groupby(['a', 'b'], sort=False).ngroup().add(1).astype(str)

代码说明

  • groupby(['a', 'b'], sort=False):按a、b两列组合分组,sort=False强制分组顺序和组合首次出现的顺序一致,不会因自动排序打乱编号顺序。
  • ngroup():给每个分组分配从0开始递增的唯一数字ID。
  • add(1):将起始编号调整为1,符合uniqueN的命名规则。
  • 转字符串后拼接unique前缀,直接生成目标列。

输出结果

运行后输出和预期完全一致:

a  b   unique
0  1  3  unique1
1  2  2  unique2
2  3  1  unique3
3  4  2  unique4
4  3  3  unique5
5  4  2  unique4
6  1  3  unique1
7  2  2  unique2

这种矢量化实现相比iterrows遍历,在数据量超过1万行时性能会有百倍以上的提升,完全符合pandas的惯用写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:57:01