pandas按date分组后基于I1、I2值组合生成新列的通用实现方法
实现方案
你可以直接用pandas内置的pivot/pivot_table方法完成转换,代码简洁且通用,兼容不同的I1、I2取值组合场景。
基础代码示例
假设原始DataFrame命名为df,实现代码如下:
# 生成透视表,以date为行索引,I1+I2为列维度,取F1、F2的值 result = df.pivot(index='date', columns=['I1', 'I2'], values=['F1', 'F2']) # 把多级列名拼接成目标格式的单级列名 result.columns = result.columns.map(lambda col: f"{col[0]}-{col[1]}-{col[2]}") # 将date从索引恢复为普通列 result = result.reset_index()
兼容重复数据的通用版本
如果存在同一个date下I1、I2组合重复的情况,可以改用pivot_table指定聚合规则,避免报错:
result = df.pivot_table( index='date', columns=['I1', 'I2'], values=['F1', 'F2'], aggfunc='first' # 可根据需求替换为sum、mean等聚合函数 ) result.columns = result.columns.map(lambda col: f"{col[0]}-{col[1]}-{col[2]}") result = result.reset_index()
运行后得到的result就是你需要的目标结构DataFrame,列顺序可以按需再调整。
内容的提问来源于stack exchange,提问作者20_Limes
相关产品推荐
相关产品推荐

