如何使用Pandas的groupby()与sum()统计单月消费超25000美元的持卡记录
错误说明
你生成的df_3不符合要求,核心问题是groupby()用法写反了:你把需要聚合求和的Amount列当成了分组键,反而对月份、持卡人姓名做无意义的求和,才会出现金额作为索引、甚至出现负消费额的异常输出,这个中间表从根上就错了,没法用来做后续统计。
正确实现流程
- 第一步:生成符合要求的月度消费汇总表
分组维度必须是「持卡人+自然月」两个字段,对Amount列做求和聚合,每一行对应1位持卡人1个月的总消费:# 按持卡人、月份分组,计算单月单人总消费 monthly_spend = df.groupby(['Cardholder Name', 'Calendar Month'], as_index=False)['Amount'].sum() - 第二步:筛选符合阈值的记录
用布尔索引筛出总消费额大于25000美元的行:over_threshold = monthly_spend[monthly_spend['Amount'] > 25000] - 第三步:计算记录总数
筛选后结果的行数就是你要的统计值:total_count = len(over_threshold) # 等价写法:total_count = over_threshold.shape[0]
要点提醒
groupby()的参数逻辑是:括号内传入的是用来拆分数据的分组维度字段,后续指定的列才是要做聚合计算(比如sum、count)的指标字段,不要把聚合指标放到分组参数里。
内容的提问来源于stack exchange,提问作者Vur
相关产品推荐
相关产品推荐

