如何用Python Pandas将Excel宽表转换为结构化长表格式
Pandas实现宽表转长表(Unpivot)
你的需求本质是将宽格式数据转换为长格式数据,在Pandas里可以直接用melt()函数实现,不需要复杂的crossjoin操作。
代码实现
首先构造你的原始数据:
import pandas as pd # 原始数据 data = { 'CostCenter': ['A21', 'B21', 'C21'], 'Monday': ['$1000', '$1000', '$1000'], 'Tuesday': ['$2000', '$2000', '$2000'], 'Wednesday': ['$3000', '$3000', '$3000'] } df = pd.DataFrame(data)
然后使用melt()完成格式转换:
# 转换为长格式 long_df = df.melt( id_vars='CostCenter', # 保持不变的基准列 var_name='DAY', # 原日期列名转为新列的名称 value_name='VALUE' # 原列数值对应的新列名称 )
转换结果
输出的long_df完全符合你的期望格式:
CostCenter DAY VALUE 0 A21 Monday $1000 1 B21 Monday $1000 2 C21 Monday $1000 3 A21 Tuesday $2000 4 B21 Tuesday $2000 5 C21 Tuesday $2000 6 A21 Wednesday $3000 7 B21 Wednesday $3000 8 C21 Wednesday $3000
参数说明
id_vars:指定不需要被拆分转换的列,这里的CostCenter会和每一条转换后的行数据绑定。var_name:定义将原宽表的列名(日期)存入的新列名称。value_name:定义将原宽表的数值存入的新列名称。
内容的提问来源于stack exchange,提问作者aguerra619
相关产品推荐
相关产品推荐

