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

如何使用Pandas合并多行并将行值转换为列?

Pandas 实现多行DataFrame转指定单行格式

原数据构造

先还原你提供的原始DataFrame:

import pandas as pd

df = pd.DataFrame({
    'key': ['A', 'B', 'A', 'B', 'A', 'B'],
    'value': [36.0, 38.0, 19.0, 25.5, 92.0, 73.7],
    'id': ['NWL', 'NWL', 'MOH', 'MOH', 'PPC', 'PPC'],
    'code': [787501, 787501, 978462, 978462, 259280, 259280]
})

转换实现

这是典型的长表转宽表需求,直接用Pandas的pivot函数即可完成:

# 按id和code分组,将key的取值转为列,填充对应value
result = df.pivot(index=['id', 'code'], columns='key', values='value').reset_index()

# 调整列名层级,转为普通列名
result.columns = ['id', 'code', 'A', 'B']

# 调整列顺序,匹配目标格式
result = result[['A', 'B', 'id', 'code']]

# 查看结果
print(result)

输出结果

执行后得到的DataFrame如下:

A     B    id    code
0  36.0  38.0  NWL  787501
1  19.0  25.5  MOH  978462
2  92.0  73.7  PPC  259280

补充说明

如果你的数据中存在同一id+code+key对应多个value的情况,建议改用pivot_table并指定聚合函数(比如取均值、求和),示例:

# 处理重复值场景,这里用均值聚合
result = df.pivot_table(index=['id', 'code'], columns='key', values='value', aggfunc='mean').reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:40:19