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

如何将DataFrame列头转换为聚合行、指定列转换为新表头

实现方法

使用Pandas即可完成转换,核心逻辑是宽表转长表后分组聚合,再转回目标宽表结构,完整实现代码如下:

import pandas as pd

# --------------- 如果你是要先构造测试原始数据,可执行这段 ---------------
data = [
    ['John', 'Minutes', 23, 32, 43, 21, 43, 35],
    ['John', 'Distance', 23.2, 32.7, 54.2, 24.2, 47.8, 32.1],
    ['John', 'Sprints', 5, 3, 8, 3, 9, 2],
    ['Bob', 'Minutes', 25, 23, 43, 31, 38, 23],
    ['Bob', 'Distance', 32.4, 35.6, 43.7, 21.8, 26.8, 12.5],
    ['Bob', 'Sprints', 8, 4, 8, 6, 9, 2],
]
df = pd.DataFrame(data, columns=['Athlete', 'Variable', 28.0, 28.0, 28.0, 29.0, 29.0, 29.0])
# -------------------------------------------------------------------

# 1. 把周数列从宽格式转为长格式
df_melt = df.melt(id_vars=['Athlete', 'Variable'], var_name='week', value_name='value')
# 2. 周数从浮点数转为整数
df_melt['week'] = df_melt['week'].astype(int)
# 3. 按运动员、周、统计项分组求和
df_group = df_melt.groupby(['Athlete', 'week', 'Variable'])['value'].sum().reset_index()
# 4. 把统计项从行转为列头,得到最终结果
df_result = df_group.pivot(index=['Athlete', 'week'], columns='Variable', values='value').reset_index()
# 清除多余的列名索引
df_result.columns.name = None

执行完成后df_result就是你需要的目标结构,数值和要求的输出完全匹配。

内容的提问来源于stack exchange,提问作者Christian Rønsholt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:27:05