使用Pandas Melt将含上下界的宽表转换为长表
Pandas 宽格式DataFrame转长格式(按alpha和target索引)
需求说明
现有宽格式DataFrame,包含lb1/ub1到lb12/ub12共12组上下界列,以及target列标识场景。需要将其重塑为长格式,以alpha(对应1-12的编号)和target为索引,保留lb(下界)、ub(上界)两列。
实现代码
使用Pandas内置的wide_to_long函数(专门适配这种前缀+数字的列结构),代码如下:
import pandas as pd # 假设原数据存储在变量df中 df_long = pd.wide_to_long( df, stubnames=["lb", "ub"], # 指定列名的前缀 i="target", # 保留的分组列 j="alpha", # 从列名提取的编号列 sep="" # 前缀与数字无分隔符(如lb1是lb+1) ).reset_index() # 按需设置复合索引 df_long = df_long.set_index(["alpha", "target"])
效果说明
- 原DataFrame中每一行(对应一个target场景)会被拆分为12行,分别对应alpha=1到alpha=12
- 拆分后每行的
lb对应原数据的lbN,ub对应原数据的ubN(N为alpha值) - 最终结果与需求中的长格式完全匹配
内容的提问来源于stack exchange,提问作者therickster
相关产品推荐
相关产品推荐

