Pandas分组后将条目拆分至不同列的实现需求
Pandas DataFrame格式转换方案
需求概述
你需要将宽格式的DataFrame(不同地区作为单独列)转换为长格式(地区作为行维度,对应销量值):
- 原始宽格式结构:
Date、Item列作为标识,East、West、North、South为不同地区的销量列
- 目标长格式结构:
Date、Item、Region(原地区列名)、Sales(对应地区销量值)四列
实现代码
使用Pandas内置的melt()函数即可快速完成转换,假设你的原始DataFrame变量名为df:
import pandas as pd # 执行宽转长操作 transformed_df = df.melt( id_vars=['Date', 'Item'], # 固定保留的标识列 var_name='Region', # 原地区列名转换后的新列名称 value_name='Sales' # 原销量值对应的新列名称 ) # 可选:按Date和Item排序,匹配目标格式的顺序 transformed_df = transformed_df.sort_values(by=['Date', 'Item']).reset_index(drop=True)
代码说明
id_vars:指定不需要被转换的列,这些列会保留在结果中作为每一行的标识var_name:设置从原列名转换而来的新列的名称(即地区列)value_name:设置原列中对应数值的新列名称(即销量列)
执行上述代码后,就能得到你需要的目标格式DataFrame。
内容的提问来源于stack exchange,提问作者Vijay Pal Singh
相关产品推荐
相关产品推荐

