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

Python Pandas处理Excel重复邮政编码:求和生成新列表求助

解决Excel重复邮政编码对应数量求和的问题

嘿,你已经迈出了关键的第一步——筛选出重复的邮政编码,做得不错!不过其实用Pandas内置的分组聚合功能,就能更简洁高效地完成「找出重复Zip+对应Quantity求和」的需求,不用借助Counter和filter绕弯路,我给你一步步拆解:

核心思路

Pandas的groupby方法天生适合这种「按某列分组+对另一列聚合计算」的场景,我们可以直接:

  • 按Zip列分组,统计每个Zip对应的Quantity总和
  • 筛选出那些出现次数超过1次的Zip,保留它们的求和结果

完整优化代码

import pandas as pd

# 1. 读取Excel数据(和你原来的步骤一致)
df = pd.read_excel(r'L:\FixedIncomeReport.xlsx')

# 2. 先按Zip分组,计算每个Zip的Quantity总和,同时统计每个Zip出现的次数
zip_summary = df.groupby('Zip').agg(
    Total_Quantity=('Quantity', 'sum'),
    Occurrence_Count=('Quantity', 'count')
).reset_index()

# 3. 筛选出重复的Zip(出现次数>1),得到最终结果
duplicate_zips_with_sum = zip_summary[zip_summary['Occurrence_Count'] > 1]

# 4. 可以把结果转成你需要的列表格式,比如每个元素是(Zip, 求和值)的元组
result_list = list(zip(duplicate_zips_with_sum['Zip'], duplicate_zips_with_sum['Total_Quantity']))

# 打印看看结果
print("重复邮政编码及对应数量求和:")
for zip_code, total in result_list:
    print(f"Zip {zip_code}: 总数量 = {total}")

代码解释

  • groupby('Zip'):把数据按邮政编码分组,相同Zip的行会被归为一组
  • agg(...):对每组进行聚合操作,这里同时计算了两个值:Total_Quantity是该Zip对应的所有Quantity之和,Occurrence_Count是该Zip出现的次数
  • reset_index():把分组后的索引(Zip)变回普通列,方便后续筛选
  • 最后通过Occurrence_Count > 1筛选出重复的Zip,再转成你需要的列表格式就行

简化版写法(适合快速输出)

如果只是想快速得到结果,甚至可以简化成一行:

# 一行代码直接得到重复Zip的求和结果
duplicate_sum = df.groupby('Zip')['Quantity'].sum()[df.groupby('Zip')['Zip'].count() > 1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:34:02