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

如何转置Python DataFrame,将不同列值转为列并合并对应行数据

问题描述

现有一个包含level、match、params、value列的Python DataFrame,其中level与match为唯一组合。需要将其转换为以params的不同取值(m、p)作为列名,对应value值按level&match组合同行展示的格式。

原始数据:

level  match params  value
    0      0      m  value1
    0      1      p  value2
    1      0      m  value3
    1      1      p  value4

目标格式:

m         p
value1    value2
value3    value4 
解决方案

可以用Pandas的pivot方法快速完成转换,核心是指定分组的行索引、列名来源和填充值:

import pandas as pd

# 构建原始DataFrame
df = pd.DataFrame({
    'level': [0, 0, 1, 1],
    'match': [0, 1, 0, 1],
    'params': ['m', 'p', 'm', 'p'],
    'value': ['value1', 'value2', 'value3', 'value4']
})

# 执行转换:以level+match为分组依据,params作列名,value填充对应单元格
result = df.pivot(index=['level', 'match'], columns='params', values='value')
# 移除索引和列名的层级标签,让输出完全匹配目标格式
result = result.reset_index(drop=True)
result.columns.name = None

print(result)

执行后输出:

m         p
0  value1  value2
1  value3  value4

也可以用set_index加unstack的组合实现相同效果:

result = df.set_index(['level', 'match', 'params'])['value'].unstack('params')
result = result.reset_index(drop=True)
result.columns.name = None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:55:29