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

pandas如何按照列的无重复出现模式对dataframe进行分组?

实现方案

我们可以通过遍历指定列记录已出现元素的方式生成分组标签,保证每个分组内指定列不存在重复值,完全匹配示例中的分组要求,实现代码和效果如下:

import pandas as pd

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

# 定义分组函数,target_col为要校验无重复的指定列
def group_by_unique_col(df, target_col='x'):
    group_id = 0
    group_ids = []
    seen = set()
    for val in df[target_col]:
        if val in seen:
            group_id += 1
            seen = set()
        seen.add(val)
        group_ids.append(group_id)
    return group_ids

# 生成分组标签
df['group_id'] = group_by_unique_col(df)

# 按分组id输出结果
for gid, group in df.groupby('group_id'):
    print(f"分组{gid}:")
    print(group, '\n')

运行结果:

分组0:
   x  y  group_id
0  a  1         0
1  b  2         0
2  c  3         0 

分组1:
   x  y  group_id
3  c  4         1
4  b  3         1
5  a  1         1 

补充说明

  • 调整group_by_unique_col函数的target_col参数,即可切换校验无重复的列
  • 如果需要同时校验多列组合无重复,可以把遍历的单个值替换为对应行多列组成的元组,在set中存储元组即可实现对应逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:15:04