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

如何使用Pandas pivot功能同时基于多列值生成透视表

多值字段透视转换实现方案(基于Pandas)

简化示例实现(ID、Gender、salary、age、weight场景)

直接使用pandas.pivot_table即可实现多值字段的透视,不需要额外拆分数据,示例代码如下:

import pandas as pd

# 构造示例测试数据
df = pd.DataFrame({
    'ID': [1,2,3,4,5,6],
    'Gender': ['男','女','男','女','男','女'],
    'salary': [10000,12000,9000,11000,13000,14000],
    'age': [25,30,28,32,26,29],
    'weight': [70,55,75,52,68,58]
})

# 执行透视转换
pivot_df = pd.pivot_table(
    df,
    index='ID', # 固定不变的行维度
    columns='Gender', # 要展开为列的字段
    values=['salary','age','weight'], # 要统计的多值字段
    aggfunc='sum' # 聚合规则,根据需求调整为mean、count等,若ID+Gender唯一可取值first
)

# 合并多层列名为单层级,生成salary_男、salary_女这类格式的列名
pivot_df.columns = [f'{val_col}_{gender}' for val_col, gender in pivot_df.columns]
# 重置索引,把ID从索引转为普通列
pivot_df = pivot_df.reset_index()

实际业务场景实现(3个值字段+11种TipoPromo取值场景)

逻辑和简化示例完全一致,替换对应字段即可:

import pandas as pd

# 读取你的数据集,根据实际文件格式调整读取方法
df = pd.read_excel('你的本地数据集路径.xlsx')

# 执行透视转换
pivot_result = pd.pivot_table(
    df,
    index=['替换为你需要保留的所有非展开维度字段,比如日期、门店ID等'],
    columns='TipoPromo',
    values=['Venda_Bruta', 'Percent_Desconto', 'MargemPDV'],
    aggfunc='sum' # 按业务需求调整聚合规则
)

# 合并列名,生成33个符合要求的列
pivot_result.columns = [f'{val_col}_{tipo_promo}' for val_col, tipo_promo in pivot_result.columns]
pivot_result = pivot_result.reset_index()

# 可选:填充缺失值为0,避免某类TipoPromo无数据时出现空值
pivot_result = pivot_result.fillna(0)

注意事项

  • 若你的数据中同一个「固定维度+TipoPromo」组合存在多行数据,必须明确指定符合业务逻辑的聚合规则,否则结果会不符合预期
  • 若不需要聚合,仅做一对一的宽表转换,且「固定维度+TipoPromo」可以唯一确定一行数据,aggfunc设置为'first'即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:54:03