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

如何在Python DataFrame中按交易规模分组汇总对应交易总价?

解决方案

首先,我们可以分两步实现你的需求:先算出每单笔交易的总价和对应商品数量,再按交易规模(商品数量)汇总总价总和与交易笔数。

步骤1:计算单交易的核心指标

我们需要先基于Time和Receipt这两个唯一标识交易的字段分组,同时聚合两个关键数据:

  • 每笔交易的商品数量(也就是你的「交易规模」)
  • 每笔交易的总价总和

代码实现如下:

# 生成每笔交易的商品数量与总价
transaction_detail = supermarket.groupby(['Time', 'Receipt']).agg(
    basket_size=('total', 'size'),  # 统计单交易商品数量
    total_price=('total', 'sum')    # 计算单交易总价
).reset_index()

拿你给出的示例数据来说,运行这段代码后,transaction_detail会生成这样一行结果:

TimeReceiptbasket_sizetotal_price
12:24:32124395319.0

步骤2:按交易规模汇总数据

接下来,我们以basket_size(交易规模)为分组依据,汇总两个你需要的结果:

  • 对应交易规模的交易笔数(和你之前用value_counts()得到的结果一致)
  • 对应交易规模的所有交易总价总和

代码实现如下:

# 按交易规模汇总总价与交易笔数
basket_summary = transaction_detail.groupby('basket_size').agg(
    transaction_count=('basket_size', 'count'),  # 交易笔数
    total_revenue=('total_price', 'sum')         # 总价总和
).reset_index()

# 按你想要的格式输出结果
print("交易规模 交易笔数 总价总和")
for _, row in basket_summary.iterrows():
    print(f"{row['basket_size']} {row['transaction_count']} {row['total_revenue']}")

完整整合代码

把两步逻辑整合到一起,完整代码如下:

# 第一步:计算每笔交易的商品数量和总价
transaction_detail = supermarket.groupby(['Time', 'Receipt']).agg(
    basket_size=('total', 'size'),
    total_price=('total', 'sum')
).reset_index()

# 第二步:按交易规模汇总数据
basket_summary = transaction_detail.groupby('basket_size').agg(
    transaction_count=('basket_size', 'count'),
    total_revenue=('total_price', 'sum')
).reset_index()

# 输出最终结果
print("交易规模 交易笔数 总价总和")
for _, row in basket_summary.iterrows():
    print(f"{row['basket_size']} {row['transaction_count']} {row['total_revenue']}")

运行后你就能得到类似这样的结果:比如交易规模1对应的18853笔交易,会同时输出它们的总价总和,其他交易规模的数据也会按同样格式展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:07:50