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

Pandas DataFrame如何按指定列条件对重复子集行求和

pandas按条件对指定分组的重复行求和

我们通常对列子集对应的重复行求和的写法如下:

import pandas as pd
df = pd.DataFrame({"source": [1, 1, 3, 1, 1],
                   "target":[2, 2, 5, 3, 3],
                   "value": [0.5, 1.0, 1.51, 0.2, 0.5]})
print("原始数据:")
print(df)
print("全部分组求和结果:")
print(df.groupby(['source','target'], as_index=False)["value"].sum())

运行输出:

原始数据:
   source  target  value
0       1       2   0.50
1       1       2   1.00
2       3       5   1.51
3       1       3   0.20
4       1       3   0.50

全部分组求和结果:
   source  target  value
0       1       2   1.50
1       1       3   0.70
2       3       5   1.51

如果要给求和添加条件,比如仅对target为2的重复行执行求和,其他行保留原始值,可以用拆分拼接的思路实现,代码如下:

# 拆分数据:target=2的部分分组求和,其余部分保留原始值
df_target2 = df[df['target'] == 2].groupby(['source','target'], as_index=False)['value'].sum()
df_other = df[df['target'] != 2]
# 拼接两部分数据,重置索引
res = pd.concat([df_target2, df_other], ignore_index=True)
print(res)

运行输出完全符合预期:

source  target  value
0       1       2   1.50
1       3       5   1.51
2       1       3   0.20
3       1       3   0.50

补充:如果后续需要删除其他分组的重复行,直接执行df.drop_duplicates(subset=["source","target"])即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:15:02