Excel/Google Sheets按产品、月份汇总商品数量的交叉表转置咨询
交叉表行列切换实现方案
以下是不同工具场景下的可行实现方式:
表格工具(Excel/WPS)
- 直接转置现有交叉表
选中已经生成的「行放月份、列放产品」的交叉表全区域,按Ctrl+C复制,右键点击目标空白单元格,选择「选择性粘贴」,勾选「转置」选项后确认即可完成行列切换。 - 用数据透视表直接生成目标格式
选中原始数据集插入数据透视表,在字段设置面板中,把产品字段拖入「行」区域,月份字段拖入「列」区域,数量字段拖入「值」区域,将值汇总方式设置为「求和」即可直接得到符合要求的交叉表。
Python(Pandas)
如果用代码处理,可直接配置透视表参数生成目标结构:
import pandas as pd # 此处df为读入的原始数据集 target_crosstab = pd.pivot_table( df, index="产品", # 行维度指定为产品 columns="月份", # 列维度指定为月份 values="数量", # 聚合的数值字段为数量 aggfunc="sum", # 聚合规则为求和 fill_value=0 # 无匹配数据的单元格默认填充0 )
如果已经生成了旧的行是月份、列是产品的交叉表old_crosstab,直接调用转置方法即可:
new_crosstab = old_crosstab.T
SQL
如果直接从数据库查询生成,调整行转列的聚合逻辑即可,示例参考:
SELECT 产品, SUM(CASE WHEN 月份 = '1月' THEN 数量 ELSE 0 END) AS `1月`, SUM(CASE WHEN 月份 = '2月' THEN 数量 ELSE 0 END) AS `2月`, -- 按实际存在的月份依次补充对应聚合逻辑 SUM(数量) AS 总合计 FROM 原始数据表 GROUP BY 产品 ORDER BY 产品;
内容的提问来源于stack exchange,提问作者Victor
相关产品推荐
相关产品推荐

