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

如何正确透视Pandas DataFrame不丢失数据,得到目标格式结果?

你遇到的「压缩」问题来自两个核心原因:

  • pd.pivot_table默认会对同组(索引, 列)组合下的多个score值执行聚合计算,默认聚合规则为求平均值,会把多条数据合并为单条
  • 你设置的索引顺序为['metric', 'Final Result'],和你需要的final_result在前的行维度顺序不符,同时如果列名大小写/拼写和原表不一致,也会导致数据异常

方案1:无重复组合时直接使用pd.pivot

如果确认每组(final_result, metric, model)对应唯一的score值,不需要聚合逻辑,直接用pd.pivot即可避免自动聚合:

# 注意index顺序、列名要和原DataFrame完全一致
res = pd.pivot(
    modelPerformance,
    values='score',
    index=['final_result', 'metric'],
    columns='model'
).reset_index()

如果需要关闭多层索引的合并显示效果(避免视觉上的「压缩」感),可以提前设置pandas显示参数:

pd.set_option('display.multi_sparse', False)

方案2:存在重复组合时指定聚合规则保留全量数据

如果同组下存在多个score值,明确指定聚合函数即可避免默认聚合导致的数据丢失:

# 示例1:保留同组所有score值,用列表存储
res = pd.pivot_table(
    modelPerformance,
    values='score',
    index=['final_result', 'metric'],
    columns='model',
    aggfunc=list,
    fill_value=[] # 空值填充为空列表
)

# 示例2:同组取最大值,空值填充为0
res = pd.pivot_table(
    modelPerformance,
    values='score',
    index=['final_result', 'metric'],
    columns='model',
    aggfunc='max',
    fill_value=0
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:24:04