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

如何合并DataFrame并添加聚合后的Question No.列

按技能分组题目编号并合并DataFrame

原始数据

给出两个初始DataFrame:

import pandas as pd

a = pd.DataFrame({"Question Skill": ["Algebra", "Patterns"],
              "Average": [56,76],
              "SD": [45,30]})

b = pd.DataFrame({"Question No.": [1, 2, 3, 4, 5],
                  "Question Skill": ['Algebra', 'Patterns', 'Algebra', 'Patterns', 'Patterns']})

需求

将DataFrame b 中的Question No.按Question Skill分组为列表,再与DataFrame a 合并,得到如下目标结果:

c = pd.DataFrame({"Question Skill": ["Algebra","Patterns"],
                  "Question No.": [[1,3],[2,4,5]],
                  "Average": [56,76],
                  "SD": [45,30]})

解决方案

实现步骤

  • 对b按Question Skill分组,使用agg(list)将每组的Question No.聚合为列表
  • 通过pd.merge()将聚合后的结果与a按共同列Question Skill合并

完整代码

import pandas as pd

# 初始化原始DataFrame
a = pd.DataFrame({"Question Skill": ["Algebra", "Patterns"],
              "Average": [56,76],
              "SD": [45,30]})

b = pd.DataFrame({"Question No.": [1, 2, 3, 4, 5],
                  "Question Skill": ['Algebra', 'Patterns', 'Algebra', 'Patterns', 'Patterns']})

# 分组聚合题目编号为列表
b_grouped = b.groupby("Question Skill")["Question No."].agg(list).reset_index()

# 合并得到目标DataFrame
c = pd.merge(a, b_grouped, on="Question Skill")

# 输出结果
print(c)

运行结果

Question Skill  Average  SD Question No.
0        Algebra       56  45       [1, 3]
1       Patterns       76  30    [2, 4, 5]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 11:27:27