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

Python Pandas如何将唯一列值拆分为列并设置指定列为行索引

实现方案

你之前的代码没把Participant维度绑定到分组计数逻辑里,生成的行序号没法和每个参与者的多条作答记录对齐,自然做不到参与者和响应值的匹配,两种可直接跑通的写法如下:

  • 修正你原有cumcount + unstack的写法
    之前写cumcount()的时候只按Metric_Category分组,没有把Participant加进分组规则,生成的0、1、2序号是全表维度的计数,和单个参与者的记录不对应。把Participant设为第一层索引、同时加入分组即可:
    df_result = df2.set_index(
        [
            'Participant',
            df2.groupby(['Participant', 'Metric_Category'])['Metric_Category'].cumcount(),
            'Metric_Category'
        ]
    )['Response'].unstack().reset_index(level=1, drop=True)
    
  • 直接用pivot实现(更推荐,代码简洁不容易错)
    这种固定的长表转宽表场景,不用自己写计数逻辑,直接调pandas内置的透视接口就行:
    df_result = df2.pivot(
        index='Participant',
        columns='Metric_Category',
        values='Response'
    ).reset_index()
    

如果运行时提示索引重复报错,说明存在同一个参与者对应同一个指标分类有多条响应的情况,把pivot换成pivot_table即可:单条匹配场景传aggfunc='first'取第一条记录就行,需要合并多条结果可以传aggfunc=list把所有响应值存为列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:09:17