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

如何用Python Pandas将同唯一ID多行按多列展开合并为一行

解决方案

你可以使用 pandas 的 pivot 方法直接实现多列的宽表转换,无需复杂的 groupby+unstack 组合,步骤如下:

1. 核心代码

# 执行 pivot 转换,以id为索引,entity为列维度,剩余列作为值
df_pivot = df.pivot(index='id', columns='entity')

# 将多级列名合并为「entity_原列名」的格式
df_pivot.columns = [f'{entity}_{col}' for col, entity in df_pivot.columns]

# 把id从索引转回普通列
df_pivot = df_pivot.reset_index()

2. 代码解释

  • pivot(index='id', columns='entity'):自动将true_value、extracted_value、rater、ratio这四列作为值字段,按id分组、entity拆分列,生成一个带多级列名的DataFrame。
  • 列名合并:多级列的结构是(原列名, entity),通过列表推导式将其拼接成entity_原列名的格式,匹配你需要的输出表头。
  • reset_index():把作为索引的id恢复为普通列,最终得到目标宽表结构。

3. 验证结果

用你提供的示例数据运行代码后,输出结果与预期完全一致:

id student_true student_extracted student_rater student_ratio address_true   address_extracted address_rater address_ratio email_true         email_extracted email_rater email_ratio
1  no           yes               FALSE         100           303 lake way  303 lake way       TRUE          100           kyle@gmail.com kyle123@gmail.com  FALSE        0
2  yes          yes               TRUE          100           15 putin ave  15 putnam ave      FALSE         0             matt@gmail.com matt@gmail.com     TRUE         95

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:05:00