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

求助:将长格式DataFrame按用户名重塑为宽格式的问题

解决DataFrame按frame汇总用户标签的宽格式重塑问题

核心解决方案

根据需求调整索引参数,移除不需要的image_id即可。如果存在同一task+frame+username组合下的重复标签数据,需用pivot_table配合聚合函数处理。

情况1:无重复标签(每个用户在同一frame下仅一个标签)

直接修改索引,只保留task和frame:

pd.pivot(df, index=['task', 'frame'], columns='username', values='label')

情况2:存在重复标签(同一frame下用户有多个标签)

使用pivot_table指定聚合逻辑,例如取第一个标签:

pd.pivot_table(df, index=['task', 'frame'], columns='username', values='label', aggfunc='first')

或者将所有标签合并为列表:

pd.pivot_table(df, index=['task', 'frame'], columns='username', values='label', aggfunc=lambda x: list(x))

结果示例

以你提供的测试数据为例,运行第一种代码会得到如下无image_id字段的宽格式结果:

username    jery   tom
task    frame         
task_1  0      foo   foo
        8      xyz  NaN
        9     NaN   bar
        11     bar   bar

原因说明

原代码将image_id加入行索引,导致结果保留了这个唯一标识字段。按frame汇总的需求仅需以task和frame作为分组依据,因此移除image_id即可得到目标格式。如果存在重复数据,pivot会因索引+列的组合不唯一报错,pivot_table则可通过聚合函数处理重复值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:45:26