如何使用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
相关产品推荐
相关产品推荐

