You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中按多列分组?茶企CSV数据分层分组实现

多列分层分组统计解决方案

首先需要先把Date字段转换为**年月(YearMonth)**格式,再按指定的三层维度分组统计。以下是完整实现步骤:

1. 数据预处理:生成YearMonth字段

先读取CSV并将Date转为日期类型,再提取年月维度:

import pandas as pd

# 读取CSV文件
df = pd.read_csv('your_tea_data.csv')

# 将Date转为日期格式(根据你的实际数据格式调整format参数,比如'%Y/%m/%d')
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d')

# 生成YearMonth字段,格式为YYYY-MM的周期类型
df['YearMonth'] = df['Date'].dt.to_period('M')

2. 多列分层分组统计

直接在groupby中传入分组字段的列表,顺序对应你需要的分层优先级:YearMonth → Type → Weight,然后聚合Quantity的总和:

# 按三层维度分组,统计每组Quantity的总和
grouped_result = df.groupby(['YearMonth', 'Type', 'Weight'])['Quantity'].sum()

3. 分层展示结果

默认的分组结果会以**多层索引(MultiIndex)**形式展示,直接打印就能看到分层结构:

print(grouped_result)

输出示例大致如下:

YearMonth  Type    Weight
2023-01    Green   100g       1500
                   500g        800
           Black   100g       2200
                   500g       1200
2023-02    Green   100g       1800
...
Name: Quantity, dtype: int64

如果需要更直观的表格形式,可以用unstack()把某一层索引转成列:

# 将Weight层转为列,方便横向对比查看
print(grouped_result.unstack(level='Weight'))

补充说明

  • 确保Type和Weight字段为字符串/分类类型,避免因数据类型异常导致分组错误
  • 如果你的Date格式不是标准的YYYY-MM-DD,需要调整pd.to_datetime中的format参数匹配实际数据格式

内容的提问来源于stack exchange,提问作者John Snape

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:25:41