如何对带双层表头的Pandas DataFrame执行unpivot操作得到目标长表结构
双层表头Pandas DataFrame转长表实现方法
你可以直接用Pandas自带的melt方法处理带多层列索引的DataFrame,完整实现代码如下:
import pandas as pd # 原有读取逻辑保持不变 df = pd.read_csv('test.csv', header=[0,1],delimiter= ';', engine='python', encoding= 'unicode_escape') # 处理前3列的列名:前3列的两层表头完全重复,统一改为单层级列名 df.columns = df.columns.map(lambda x: x[0] if x[0] in ['Kode', 'Country', 'Procedure'] else x) # 执行宽表转长表操作 long_df = df.melt( id_vars = ['Kode', 'Country', 'Procedure'], var_name = ['Gender', 'Age'], value_name = 'Frequency' ) # 按需求重命名列,调整输出顺序 long_df = long_df.rename(columns={'Kode': 'Code'}) long_df = long_df[['Code', 'Country', 'Procedure', 'Gender', 'Age', 'Frequency']] # 可选:按原有数据顺序排序 long_df = long_df.sort_values(by=['Code', 'Country', 'Procedure'], ignore_index=True)
运行后得到的long_df就是符合要求的六列长表结构,和你给出的示例输出完全匹配。
内容的提问来源于stack exchange,提问作者dublin123
相关产品推荐
相关产品推荐

