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

Python中如何将分组数据第二列条目转置为独立列

解决方案

假设你的数据已经是按Company分组、按Revenue排序后的前3个Program,可以用Pandas的groupby+cumcount+pivot组合实现需求:

步骤1:准备示例数据(模拟你的输入结构)

import pandas as pd

# 模拟已分组排序好的原始数据
df = pd.DataFrame({
    'Company': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C'],
    'Program': ['ProgA1', 'ProgA2', 'ProgA3', 'ProgB1', 'ProgB2', 'ProgB3', 'ProgC1', 'ProgC2'],
    'Revenue': [1000, 800, 500, 1200, 900, 700, 1500, 1100]
})

步骤2:为每个公司的Program添加排名序号

给每个公司内的Program按现有排序(你已按Revenue排好序)分配1、2、3的序号:

# 按Company分组,给每组内的行从1开始递增加序号
df['Rank'] = df.groupby('Company').cumcount() + 1

步骤3:透视转换为目标格式

把序号列转成独立的Program列,同时去掉Revenue字段:

# 生成透视表:行是Company,列是Rank,值为Program
result = df.pivot(index='Company', columns='Rank', values='Program')

# 重命名列名为"Program 1"这类格式
result.columns = [f'Program {col}' for col in result.columns]

# 可选:把Company从索引转为普通列
result = result.reset_index()

处理不足3个Program的情况

如果部分公司只有2个或更少Program,对应列会显示NaN,可以用空字符串替换:

result = result.fillna('')

最终输出示例

CompanyProgram 1Program 2Program 3
AProgA1ProgA2ProgA3
BProgB1ProgB2ProgB3
CProgC1ProgC2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:12:17