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

如何在Pandas中对g3列执行Unpivot/逆分组操作以重构数据?

解决方案:Pandas实现按指定列逆透视分组数据

可以用Pandas的pivot_table方法实现这个需求,它能同时处理分组聚合和缺失值填充,完美匹配你要的输出格式。

步骤1:构造示例数据

import pandas as pd

# 你的原始数据
data = {
    'g1': ['A', 'A', 'B'],
    'g2': ['X', 'X', 'Y'],
    'g3': [True, False, True],
    'value1': [1, 3, 5],
    'value2': [2, 4, 6]
}
df = pd.DataFrame(data)

步骤2:执行逆透视操作

# 生成透视表,按g1、g2分组,将g3的取值扩展为列,value1/value2作为值,缺失值填0
pivot_df = pd.pivot_table(
    df,
    index=['g1', 'g2'],
    columns='g3',
    values=['value1', 'value2'],
    fill_value=0
)

# 合并多级列名,转换成"value1_True"的格式
pivot_df.columns = [f'{col[0]}_{col[1]}' for col in pivot_df.columns]

# 调整列顺序为你需要的排列
desired_columns = ['g1', 'g2', 'value1_True', 'value2_True', 'value1_False', 'value2_False']
result_df = pivot_df.reset_index()[desired_columns]

最终输出

运行上述代码后,result_df的输出完全匹配你的需求:

g1 g2  value1_True  value2_True  value1_False  value2_False
0  A  X            1            2             3             4
1  B  Y            5            6             0             0

关键说明

  • pivot_table自动按index参数指定的g1、g2分组,将g3的不同取值(True/False)作为列的维度
  • fill_value=0确保没有对应g3取值的行(比如B,Y的False项)自动填充0
  • 通过列名合并,把多级索引的列转换成你需要的带后缀的格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:09:07