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

Pandas如何筛选出现两次的姓名-科目组合并拼接对应成绩

Pandas 筛选重复姓名-科目组合并拼接去重成绩实现方案

核心代码

import pandas as pd

# 构建原始数据集
df = pd.DataFrame(
    [
        ("Alex", "Science", "A"),
        ("Bob", "Maths", "B"),
        ("Bob", "Maths", "C"),
        ("Cynthia", "Science", "C"),
        ("Dylan", "Geography", "A"),
        ("Dylan", "Geography", "A")
    ],
    columns=["Name", "Subject", "Grade"]
)

# 分组处理
result = (
    df.groupby(["Name", "Subject"], as_index=False)
    .agg(
        record_cnt=("Grade", "count"), # 统计每个组合的出现次数
        Grade=("Grade", lambda col: ",".join(sorted(set(col)))) # 成绩去重后逗号拼接
    )
    .query("record_cnt == 2") # 筛选出现2次的组合
    .drop(columns="record_cnt") # 删除临时统计的次数字段
)

print(result)

运行输出

Name    Subject Grade
0    Bob      Maths   B,C
1  Dylan  Geography     A

逻辑说明

  • 用groupby指定Name、Subject两个字段作为分组键,即可按「姓名+科目」的维度做聚合计算
  • 聚合成绩时先通过set()对组内成绩去重,避免重复值被多次拼接,加sorted()是为了保证成绩输出顺序稳定,不会因为集合的无序性出现"C,B"这类不符合预期的顺序
  • 聚合时同步统计每个分组的记录条数,筛选出条数等于2的分组后,删掉临时用的统计字段即可得到目标结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:09:19