如何高效实现Pandas DataFrame的宽表转长表(逆透视)操作?
Pandas宽表转长表的高效实现方式
要实现这种宽格式到长格式的转换,最直接高效的方法是使用Pandas内置的melt()函数——这是Pandas专门为宽表转长表设计的优化工具,性能远优于手动循环或拼接操作。
步骤示例:
- 构造原始宽格式DataFrame:
import pandas as pd # 构建原始数据 df = pd.DataFrame( data=[[0.10, 0.74, 0.25], [0.80, 0.15, 0.05]], index=['John', 'Alex'], columns=['M1', 'M2', 'M3'] )
- 使用
melt()完成转换:
# 宽转长,保留原索引,指定新列名 long_df = df.melt(ignore_index=False, var_name='M', value_name='value')
转换后结果:
M value John M1 0.10 John M2 0.74 John M3 0.25 Alex M1 0.80 Alex M2 0.15 Alex M3 0.05
关键参数说明:
ignore_index=False:保留原有的行索引(John、Alex),若设为True会生成新的整数索引var_name='M':将原列名(M1、M2、M3)映射到新列M中value_name='value':将原数值数据映射到新列value中
melt()是Pandas原生实现的函数,底层经过性能优化,处理大规模数据集时效率极高,是这类转换场景的首选方案。
内容的提问来源于stack exchange,提问作者Michelle Espinosa
相关产品推荐
相关产品推荐

