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

Pandas新手求指导:按客户分组统计金额Top2部门及交易频次

解决Pandas按客户提取前两大交易部门(含金额和频次)的问题

嘿,刚上手Pandas和groupby的话,这个需求其实可以一步步拆解来实现,完全用你提到的groupby、sum、sort和转置类操作搞定~先理清楚思路,再上代码:

第一步:准备测试数据

先把你给出的原始数据转换成可直接操作的Pandas DataFrame:

import pandas as pd

# 原始数据
data = {
    'Cus_No': [111, 111, 111, 111, 111, 111, 111, 222, 222, 222, 222, 222, 222, 222],
    'Date': ['6-Jun-18', '6-Jun-18', '8-Jun-18', '8-Aug-18', '12-Dec-18', '15-Feb-17', '18-Jan-18',
             '6-Jun-18', '6-Jun-18', '8-Jun-18', '8-Aug-18', '12-Dec-18', '15-Feb-17', '18-Jan-18'],
    'Dprtmnt': ['AAA', 'AAA', 'BBB', 'CCC', 'BBB', 'AAA', 'AAA', 'DDD', 'AAA', 'AAA', 'DDD', 'AAA', 'CCC', 'CCC'],
    'Amount': [100, 50, 125, 130, 200, 10, 20, 100, 50, 125, 130, 200, 10, 20]
}

df = pd.DataFrame(data)

第二步:计算每个客户+部门的总金额和交易频次

用groupby按客户和部门分组,分别统计金额总和(sum)和交易次数(统计Date的数量,即count):

# 分组聚合:总金额Sum,交易频次Frqnc
grouped = df.groupby(['Cus_No', 'Dprtmnt']).agg(
    Sum=('Amount', 'sum'),
    Frqnc=('Date', 'count')
).reset_index()

这一步后,每个客户的每个部门都有了对应的总金额和交易次数。

第三步:按总金额降序排序,取前两大部门

对每个客户的分组按Sum降序排列,再提取每个客户的前2条数据:

# 按客户分组,内部按总金额从高到低排序
sorted_groups = grouped.groupby('Cus_No').apply(
    lambda x: x.sort_values('Sum', ascending=False)
).reset_index(drop=True)

# 取每个客户的前两大部门
top2 = sorted_groups.groupby('Cus_No').head(2)

第四步:转置重塑成期望的列结构

用unstack实现转置,再调整列名到你想要的格式:

# 给每个客户的部门添加排名标记(Top1、Top2)
top2['rank'] = top2.groupby('Cus_No').cumcount() + 1

# 转置:把排名转成列
result = top2.set_index(['Cus_No', 'rank']).unstack()

# 合并层级索引,改成目标列名格式
result.columns = [f'Top{rank}{col}' for col, rank in result.columns]

# 重置索引,让Cus_No变回普通列
result = result.reset_index()

最终结果

运行完代码后,result就会和你期望的输出完全一致:

Cus_No Top1Dprtmnt  Top1Sum  Top1Frqnc Top2Dprtmnt  Top2Sum  Top2Frqnc
0     111         BBB      325          2         AAA      180          4
1     222         AAA      375          3         DDD      230          2

整个流程完全用到了你要求的groupby、sum、sort以及转置操作(unstack属于转置类操作),每一步都很清晰,适合新手理解~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:47:01