如何在Pandas DataFrame中为每个唯一ID生成对应的元素列表
表格格式转换解决方案
你需要完成的是*宽表转长表(逆透视)*操作,常用工具的操作方案如下:
Excel 操作步骤
- 选中原始表格的全部数据区域
- 按下
Alt + D + P快捷键调出「数据透视表和数据透视图向导」 - 选择「多重合并计算数据区域」选项,点击下一步
- 选择「创建单页字段」选项,点击下一步
- 将你选中的原始数据区域添加到「所有区域」列表中,点击下一步
- 选择透视表的生成位置,点击完成
- 在生成的透视表中,双击右下角的总计单元格,系统会自动生成你需要的长表格式
- 后续根据实际需求调整列名即可
Python Pandas 操作方案
使用pandas内置的melt方法可以快速完成转换,示例代码如下:
import pandas as pd # 读取原始表格数据,支持xlsx、csv等常见格式 df = pd.read_excel("你的原始表格路径.xlsx") # 执行宽表转长表操作 # id_vars参数填写需要保留的固定维度列,例如品类、地区等 # var_name参数填写原表格表头转换后对应的列名,例如月份 # value_name参数填写原表格数值转换后对应的列名,例如销售额 res_df = df.melt( id_vars=["品类", "地区"], var_name="月份", value_name="销售额" ) # 导出转换后的结果 res_df.to_excel("转换后表格.xlsx", index=False)
SQL 操作方案
如果数据存储在关系型数据库中,可以通过UNION ALL语句完成转换,示例代码如下:
SELECT 品类, 地区, '1月' AS 月份, `1月` AS 销售额 FROM 原始表 UNION ALL SELECT 品类, 地区, '2月' AS 月份, `2月` AS 销售额 FROM 原始表 UNION ALL -- 依次补充所有需要转换的月份列即可 SELECT 品类, 地区, '12月' AS 月份, `12月` AS 销售额 FROM 原始表
内容的提问来源于stack exchange,提问作者nuttychan
相关产品推荐
相关产品推荐

