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

如何在Pandas DataFrame中合并Question列重复行并聚合生成术语表

解决方案:用Pandas分组聚合生成术语表

这需求用Pandas的分组+聚合操作就能完美解决,给你两种实用的思路:

方法1:基于已有的join列快速聚合

既然你已经生成了join列,直接按Question分组后把同一组的join值用逗号拼接起来就行:

# 分组聚合,生成术语表
glossary_df = df.groupby('Question')['join'].agg(', '.join).reset_index()
# 重命名列名匹配你的需求
glossary_df.rename(columns={'join': 'glossary'}, inplace=True)

代码解释:

  • groupby('Question'):将DataFrame按Question列的唯一值分组,把相同问题的行归为一组
  • agg(', '.join):对每组的join列执行字符串拼接操作,用, 分隔每个响应项
  • reset_index():把分组后的索引(即Question值)转回普通列,避免索引混乱
  • rename:把原来的join列名改成你需要的glossary

方法2:跳过join列,直接在聚合时生成术语(更高效)

如果数据量较大,不想额外生成join列占用内存,可以直接在分组过程中合并response_number和response_meaning:

glossary_df = df.groupby('Question').apply(
    lambda group: ', '.join(f"{num} : {mean}" for num, mean in zip(group['response_number'], group['response_meaning']))
).reset_index().rename(columns={0: 'glossary'})

这个方法通过apply遍历每个分组,用生成器表达式直接拼接每个响应的编号和含义,一步到位得到目标结果。


运行任意一种方法后,你都会得到和期望完全一致的输出:

Questionglossary
sys_RespStatus2 : Uncomplete, 4 : Disqualified, 5 : Complete
Q01 : YES, 2 : NO
efgtb2 : B, 3 : C, 4 : D
Q1301B1 : YES, 2 : NO

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 23:37:45