如何在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
相关产品推荐
相关产品推荐

