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

如何在Python中基于GroupBy与多聚合操作生成新DataFrame

Python Pandas 按销售人员汇总数据实现方法

注:如果你的DataFrame中「售出数量」列名确实是拼写错误的Qauntities sold,请将代码中的Quantities sold替换为实际列名。

你可以通过Pandas的groupby结合agg方法快速实现需求,以下是两种直观的实现方式:

方法一:先计算销售金额列再聚合

这种方式逻辑更清晰,适合新手理解:

import pandas as pd

# 1. 新增「销售金额」列,计算每一行的销售额(售出数量 × 单价)
df['销售金额'] = df['Quantities sold'] * df['Unit Price']

# 2. 按销售人员分组,聚合计算三个指标
summary_df = df.groupby('Salesperson Name').agg(
    不同客户数量=('Customer Name', 'nunique'),  # 统计唯一客户数
    售出数量中位数=('Quantities sold', 'median'),  # 计算售出数量的中位数
    销售总额=('销售金额', 'sum')  # 求和得到销售总额
).reset_index()  # 将分组列从索引转为普通列

方法二:直接在聚合中计算销售总额

如果不想新增列,可以用lambda函数在聚合时直接计算:

import pandas as pd

summary_df = df.groupby('Salesperson Name').agg(
    不同客户数量=('Customer Name', 'nunique'),
    售出数量中位数=('Quantities sold', 'median'),
    销售总额=('Unit Price', lambda x: (x * df.loc[x.index, 'Quantities sold']).sum())
).reset_index()

关键参数说明

  • groupby('Salesperson Name'):按销售人员姓名对数据分组
  • agg():接受命名聚合参数,每个参数对应一个汇总指标,格式为「指标名=(列名, 聚合函数)」
    • nunique:统计列中唯一值的数量,用来计算不同客户数
    • median:计算列的中位数
    • sum:对列的值求和,这里用来计算销售总额

执行完成后,summary_df就是你需要的汇总DataFrame,每条记录对应一位销售人员的三个汇总指标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:20:39