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

Pandas基于两现有列创建新列并分组聚合求和的实现方法

实现方案

直接使用pandas内置的透视表+分组聚合功能即可实现,全程不需要写for循环,代码简洁且适配同邮箱多笔同档位订单的场景。

核心代码

import pandas as pd

# 构造原始DataFrame
dummy_dict_existing  = {'Email':['joblogs@gmail.com', 'joblogs@gmail.com'],
              'Ticket_Category': ['Tier1', 'Tier2'],
              'Quantity_Purchased': [5,2],
              'Total_Price_Paid':[1345.45, 10295.88]}
df = pd.DataFrame(dummy_dict_existing)

# 一步完成列转换+金额聚合
result = df.pivot_table(
    index = "Email",
    columns = "Ticket_Category",
    values = "Quantity_Purchased",
    aggfunc = "sum",
    fill_value = 0
).add_suffix("_Quantity_Purchased").join(
    df.groupby("Email")["Total_Price_Paid"].sum()
).reset_index()

输出结果

执行print(result)即可得到你需要的目标结构:

Email  Tier1_Quantity_Purchased  Tier2_Quantity_Purchased  Total_Price_Paid
0  joblogs@gmail.com                         5                         2          11641.33

说明

  • 用pivot_table把票档维度的行数据转成独立列,add_suffix自动给生成的Tier1、Tier2列加上你需要的后缀名
  • aggfunc="sum"对同邮箱同票档的购票数量自动求和,比取首值的写法更鲁棒,即使后续同一个用户同票档有多条订单也能正确统计
  • fill_value=0会把用户未购买的票档数量自动填充为0,避免出现空值
  • 最后通过join拼接按邮箱分组求和的总支付金额即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:15:36