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

Pandas按分组生成排序后的唯一值拼接列实现方法

Pandas实现代码

你可以直接使用以下代码完成需求:

import pandas as pd 
data = [['Adam',12,'M','A',12,15], 
        ['Adam',12,'M','B',13,15],
        ['Adam',12,'M','C',14,14],
        ['Mini',12,'F','A',10,14],
        ['Mini',12,'F','D',14,15],
        ['Mini',12,'F','C',13,16],
       ] 
df = pd.DataFrame(data, columns = ['Name','Age','Gender','Subject','minmark','maxmark'])

# 核心实现逻辑
result = df.groupby(['Name', 'Age', 'Gender'], as_index=False)['Subject'].agg(
    SubjectList = lambda sub_series: ','.join(sorted(sub_series.unique()))
)

# 打印输出结果
print(result)

逻辑说明

  • groupby指定Name、Age、Gender三个字段作为分组规则,as_index=False参数保证分组键不会转为索引,仍作为普通列保留
  • 对每个分组内的Subject列做三步处理:
    1. 调用unique()方法对科目去重
    2. 调用sorted()对去重后的科目按升序排序
    3. 用','.join()把排序后的列表拼接为英文逗号分隔的字符串
  • 聚合后的新列命名为SubjectList,最终输出的每个分组仅占一行,完全符合预期输出要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:45:02