拆分DataFrame表头提取日期列后如何实现数据透视转换
DataFrame表头日期拆分转换方案
你当前的需求属于典型的宽表转长表场景,直接使用pandas内置的melt方法即可实现,无需自定义lambda函数或者pivot相关方法,代码更简洁易维护。
核心实现代码
import pandas as pd # 假设你的原始DataFrame命名为df,核心转换逻辑如下 result = df.melt( id_vars=['Gerencia'], # 指定不需要转换的固定维度列 var_name='统计日期', # 原表头的日期值会存入该新增列 value_name='指标数值' # 原表格内的数值会存入该新增列 ) # 可选:将统计日期转为datetime格式,方便后续按日期维度做聚合计算 result['统计日期'] = pd.to_datetime(result['统计日期'])
转换后效果示例
Gerencia 统计日期 指标数值 0 Ingeniería de Producción 2021-01-01 17.451383 1 Ingeniería de Producción 2021-01-01 0.000000 2 Ingeniería de Producción 2021-01-01 17.437412 3 Ingeniería de Producción 2021-02-01 7.633112 4 Ingeniería de Producción 2021-02-01 0.000000 5 Ingeniería de Producción 2021-02-01 14.656419 6 Ingeniería de Producción 2021-03-01 4.461760 7 Ingeniería de Producción 2021-03-01 0.000000 8 Ingeniería de Producción 2021-03-01 2.871140
后续聚合示例
转换后可以直接用groupby实现多维度聚合,比如按月份+部门统计指标总和:
monthly_total = result.groupby( [pd.Grouper(key='统计日期', freq='M'), 'Gerencia'] )['指标数值'].sum().reset_index()
内容的提问来源于stack exchange,提问作者Ari Blit
相关产品推荐
相关产品推荐

