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

如何按B列分组求和D列值且不重复计算同A列值的D值

解决方案

首先还原你提供的DataFrame:

import pandas as pd

data = {
    'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'abc', 'abc'],
    'B': ['a', 'a', 'b', 'b', 'a', 'c', 'a'],
    'C': [1200, 700, 1000, 270, 350, 270, 350],
    'D': [300, 300, 300, 70, 70, 300, 300]
}
df = pd.DataFrame(data)

你的核心需求是:按B列分组求和D,但同一A对应的同一B组合,D值只累加一次(同一A的D值固定,重复行属于冗余数据)。

实现步骤

  1. 去除A和B的重复组合:同一(A,B)对应的D值完全一致,重复行无需保留
  2. 按B分组,对D列求和

代码实现:

# 保留唯一的(A,B)组合
unique_df = df.drop_duplicates(subset=['A', 'B'])

# 按B分组求和D
sum_result = unique_df.groupby('B')['D'].sum()

print(sum_result)

输出结果

B
a    670
b    370
c    300
Name: D, dtype: int64

完全匹配你期望的计算逻辑:

  • a:300(foo) + 70(bar) + 300(abc) = 670
  • b:300(foo) + 70(bar) = 370
  • c:300(abc) = 300

也可以用一行代码简化实现:

sum_result = df.groupby(['A', 'B'])['D'].first().groupby('B').sum()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:20:27