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

使用pandas groupby按唯一ID求和后去重及导出Excel新工作表的问询

实现方案

生成去重的ID与总薪酬对应表

你用transform求和后会把汇总值填充到对应ID的每一行,所以天然会有重复记录,两种方式得到无重复结果:

  • 方式1:基于已生成的总薪酬列直接去重
# 仅保留ID和汇总薪酬两列,删除重复行
id_pay_summary = df[['ID', 'Total Courier Pay']].drop_duplicates()
  • 方式2:直接分组聚合生成汇总表(更高效,不需要先给原表加列)
id_pay_summary = df.groupby('ID', as_index=False)['Total Pay'].sum().rename(columns={'Total Pay': 'Total Courier Pay'})

两种方式得到的结果都和你给出的参考格式完全一致。

同一工作簿多工作表导出

直接用pd.ExcelWriter就可以把两个表写入同一个Excel的不同工作表:

import pandas as pd

# 你的原有逻辑,保留全列的原始表
df['Total Courier Pay'] = df.groupby(['ID'])['Total Pay'].transform(sum)
# 生成去重汇总表
id_pay_summary = df[['ID', 'Total Courier Pay']].drop_duplicates()

# 一次性导出到同个Excel
with pd.ExcelWriter('courier_pay_result.xlsx') as writer:
    # 全列原始数据写入「原始明细」工作表
    df.to_excel(writer, sheet_name='原始明细', index=False)
    # 去重汇总数据写入「ID薪酬汇总」工作表
    id_pay_summary.to_excel(writer, sheet_name='ID薪酬汇总', index=False)

如果遇到ID去重不生效的情况,可先统一ID的字段格式再操作,比如先执行df['ID'] = df['ID'].astype(str)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:12:05