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

pandas如何按指定列分组后将term_type转列并拼接对应term值

Pandas宽表转换实现方案

你之前使用pivot_table失败的核心原因是pivot_table默认聚合函数为平均值,不支持字符串拼接,指定对应聚合规则即可实现需求,以下是两种可直接运行的实现方式:


方式1:直接使用pivot_table实现

import pandas as pd

# 原始DataFrame
df = pd.DataFrame(
   {
       "id": [1, 1, 2, 2],
       "name": ["alpha", "alpha", "bravo","bravo"],
       "term_type": ["hist", "hist", "hist", "bio"] ,
       "term": ["delta9", "delta10", "delta1", "alpha1"]
    })

result = df.pivot_table(
    index=["id", "name"],  # 按id、name分组作为行索引
    columns="term_type",   # term_type的取值作为新列名
    values="term",         # 列值取自term字段
    aggfunc="||".join      # 同分组同类型的term用||拼接
).reset_index()  # 将id、name从索引转为普通列

# 可选:如果需要name首字母大写匹配示例格式,可加此行
result["name"] = result["name"].str.capitalize()

方式2:groupby+unstack显式分组实现

逻辑更清晰,适合需要对分组结果做额外处理的场景:

result = df.groupby(["id", "name", "term_type"])["term"]\
           .agg("||".join)\
           .unstack("term_type")\
           .reset_index()

两种方式输出的结果完全匹配你需要的格式,无匹配值的位置默认返回NaN。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 17:39:02