如何基于列名数字后缀拆分pandas DataFrame并转换为长表格式
解决方案
你可以直接使用 pandas 内置的 pd.wide_to_long() 方法实现需求,该方法专门用于处理列名带固定数字后缀、需要拆分多行的宽表场景,是当前场景的最优解,代码非常简洁:
1. 构造示例数据
import pandas as pd df = pd.DataFrame({ 'Mean 1': [5, 3], 'Mean 2': [10, 6], 'Stat 1': [15, 9], 'Stat 2': [20, 12], 'ID': ['Z', 'X'] })
2. 核心转换代码
result = pd.wide_to_long( df, stubnames=['Mean', 'Stat'], # 要拆分的列名前缀 i='ID', # 固定不变的索引列 j='#', # 新生成的编号列名称 sep=' ' # 列名前缀和编号之间的分隔符 ).reset_index()
执行后得到的结果和你预期的输出完全一致,可按需调整列的顺序。如果强行用pd.melt()实现需要多次拆分拼接,代码冗余度高,不推荐。
内容的提问来源于stack exchange,提问作者Akshay Chacko
相关产品推荐
相关产品推荐

