Python | 宽表转长表
运行环境:jupyter notebook (python 3.12.7) + Pandas
1.代码(输入/输出表格均放在桌面)
import pandas as pd
import os# 设置桌面路径 - 兼容Windows和macOS
desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")# 读取Excel文件
file_path = os.path.join(desktop_path, "五维评分模型数据 - 整合.xlsx")
df = pd.read_excel(file_path, header=0)# 宽表转长表
long_df = pd.melt(df,id_vars=['维度', '年度', '指标'],var_name='地区',value_name='数值'
)# 按维度/年度排序
long_df = long_df.sort_values(['维度', '年度', '地区', '指标']).reset_index(drop=True)# 设置输出文件路径
output_path = os.path.join(desktop_path, "长表格式数据.xlsx")# 保存结果到桌面
long_df.to_excel(output_path, index=False)# 打印前5行验证
print("转换后的长表预览:")
print(long_df.head())# 显示保存信息
print("\n" + "="*50)
print(f"转换完成!长表已保存到桌面文档:")
print(output_path)
print("="*50)
运行代码结果:
2.简化代码(表格均放在jupyter)
import pandas as pd# 读取Excel文件(根据实际路径修改)
file_path = '五维评分模型数据 - 整合.xlsx'
df = pd.read_excel(file_path, header=0)# 宽表转长表
long_df = pd.melt(df,id_vars=['维度', '年度', '指标'],var_name='地区',value_name='数值'
)# 按维度/年度排序
long_df = long_df.sort_values(['维度', '年度', '地区', '指标']).reset_index(drop=True)# 保存结果到新Excel文件(可选)
long_df.to_excel('长表格式数据.xlsx', index=False)# 打印前5行验证
print("转换后的长表预览:")
print(long_df.head())
3.宽表VS.长表
转换前为宽表格式:
转换后为长表格式: