转置后Pandas DataFrame将列头转为列值的实现方法咨询
解决方案
你需要的是Pandas宽表转长表的操作,以下是两种可直接运行的实现方式:
方法1:使用stack()方法(最简洁,输出顺序和你给出的示例完全一致)
import pandas as pd # 你的示例数据构造 df = pd.DataFrame({'c':[1,3],'d':[2,4]}, index=['a','b']) # 核心转换逻辑 res = df.stack().reset_index() # 重命名为你需要的列名 res.columns = ['col1', 'col2', 'col3']
方法2:使用melt()方法(显式指定转换规则,可读性更强)
# 核心转换逻辑 res = df.reset_index(names='col1').melt( id_vars='col1', var_name='col2', value_name='col3' ).sort_values('col1').reset_index(drop=True)
适配你提到的日期场景的调整方式
如果你转置后的数据框,索引是原有业务变量,列头为日期,只需要修改列重命名部分即可:
res = df.stack().reset_index() res.columns = ['业务变量名', 'Date', '数值']
内容的提问来源于stack exchange,提问作者CARLOS FELIPE SANCHEZ
相关产品推荐
相关产品推荐

