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

如何将含重复列名的DataFrame转换为指定目标结构?

Pandas DataFrame 格式转换方案

问题场景

原始DataFrame结构:

Sp1 Sp1 Sp1 Sp2 Sp2 Sp2 Sp3 Sp3 Sp3
count  1   0   3   5   2   0   2   4   1
plot   A   B   C   A   B   C   A   B   C

需要转换为:

plot Sp1 Sp2 Sp3
        A   1   5   2   
        B   0   2   4
        C   3   0   1

实现步骤

方法一:分步操作(清晰易懂)

  1. 构造原始数据
    先还原你的原始DataFrame:

    import pandas as pd
    
    df = pd.DataFrame(
        data=[[1,0,3,5,2,0,2,4,1], ['A','B','C','A','B','C','A','B','C']],
        index=['count', 'plot'],
        columns=['Sp1','Sp1','Sp1','Sp2','Sp2','Sp2','Sp3','Sp3','Sp3']
    )
    
  2. 转置+分组聚合
    转置后按列名分组,提取对应count和plot的值:

    # 转置DataFrame,把原列变成行,原行变成列
    transposed_df = df.T
    # 按列名(原Sp1/Sp2/Sp3)分组,取每组的count和plot值
    grouped = transposed_df.groupby(transposed_df.index).agg({
        'count': 'first',
        'plot': 'first'
    })
    # 调整结构,把plot设为索引,重命名列索引
    result = grouped.set_index('plot')
    result.columns.name = None
    

方法二:一行简洁写法

如果追求代码简洁,可以合并步骤:

result = df.T.groupby(level=0).agg({'count': 'first', 'plot': 'first'}).set_index('plot').rename_axis(None, axis=1)

最终得到的结果:

Sp1  Sp2  Sp3
plot               
A       1    5    2
B       0    2    4
C       3    0    1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:44:53