You need to enable JavaScript to run this app. 如何将Pandas DataFrame按C列关联的多列转换为指定宽表格式
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pandas DataFrame按C列关联的多列转换为指定宽表格式

解决方案

你要实现的是典型的长表转宽表需求,直接用Pandas内置的pivot方法即可实现,该方法底层做了性能优化,可适配大批量数据场景,具体实现代码如下:

import pandas as pd

# 你的原始DataFrame构建代码
df1 = pd.DataFrame({'A':[1,1,1], 'B':[2,2,2], 'C':['1y', '3y', '7y'], 'D':[111,222,333], 'E':[-111,-222,-333]})

# 核心转换逻辑
# index参数放所有不需要展开的公共列,values参数放所有要按C列拆分的数值列
pivoted = df1.pivot(index=['A', 'B'], columns='C', values=['D', 'E'])
# 合并多层列名为你需要的「列名_后缀」格式
pivoted.columns = [f"{col}_{suffix}" for col, suffix in pivoted.columns]
# 把公共列从索引恢复为普通列
df2 = pivoted.reset_index()

print(df2)

兼容场景说明

如果你的数据存在相同A+B+C组合的重复行,直接用pivot会报错,可以替换为pivot_table方法,指定重复值的聚合规则即可:

# aggfunc可根据业务需求替换为sum、mean等聚合函数
pivoted = df1.pivot_table(index=['A', 'B'], columns='C', values=['D', 'E'], aggfunc='first')
# 后续列名合并、重置索引逻辑和上述方案完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 15:45:09