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

Pandas如何按公共键匹配实现跨DataFrame列值高效累加

Pandas性能优化实现方案

双层循环属于Python层面的迭代操作,会产生极高的性能开销,改用Pandas原生矢量化运算即可实现百倍级以上的性能提升,具体实现有两种常用方案:

方案1:合并累加(逻辑直观易调试)

  • 第一步对源表按公共键分组,统计每个Codes interne对应的Quantite requise总和
sum_recette = RecetteDF.groupby('Codes interne', as_index=False)['Quantite requise'].sum()
  • 第二步将统计结果与目标表左连接,空值补0后完成累加
# 左连接保证目标表原有数据不丢失
InventaireDF = InventaireDF.merge(sum_recette, on='Codes interne', how='left')
# 没有匹配到的键补0后累加
InventaireDF['Quantite Reserver'] = InventaireDF['Quantite Reserver'] + InventaireDF['Quantite requise'].fillna(0)
# 清理多余列
InventaireDF = InventaireDF.drop(columns=['Quantite requise'])

方案2:映射累加(内存占用更低,适合超大表)

直接将分组求和结果转为字典映射,原地更新目标表,不需要生成中间合并表:

# 生成键对应总需求量的映射字典
req_dict = RecetteDF.groupby('Codes interne')['Quantite requise'].sum().to_dict()
# 映射后直接累加,无匹配值补0
InventaireDF['Quantite Reserver'] += InventaireDF['Codes interne'].map(req_dict).fillna(0)

注意事项

如果匹配失效,优先检查两个表的Codes interne列数据类型是否一致,可通过astype()方法统一类型后再执行操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:15:03