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

如何在执行pd.merge内连接时对指定列进行求和?

合并DataFrame时同时对指定列求和(一行代码实现)

我有两个DataFrame,需要执行内连接的同时对COUNT1和COUNT2两列进行求和。目前的实现代码如下:

df_res = df1.merge(df2,on=['G-S'], how='inner')
print(df_res)
df_res['COUNT1']=df_res['COUNT1_x']+df_res['COUNT1_y']
df_res['COUNT2']=df_res['COUNT2_x']+df_res['COUNT2_y']
df_res=df_res.drop(columns=['COUNT1_x', 'COUNT1_y','COUNT2_x','COUNT2_y'])

但我希望用一行代码完成合并+求和+删冗余列的操作,且只接受pd.merge()的实现方式,不考虑concat方案。

输入输出示例

df1

SOMEATT,COUNT1,COUNT2,G-S
B,53,31,SOMEVAL1
E,81,19,SOMEVAL1
L,90,20,SOMEVAL3
S,30,17,SOMEVAL2

df2

SOMENUMBER,COUNT1,COUNT2,G-S
1,50,19,SOMEVAL1
7,32,16,SOMEVAL2

期望输出

SOMENUMBER,SOMEATT,COUNT1,COUNT2,G-S
1,B,103,50,SOMEVAL1
1,E,131,38,SOMEVAL1
7,S,62,33,SOMEVAL2

一行代码解决方案

可以利用Pandas的链式调用,将合并、列求和赋值、删除冗余列的操作整合到一行:

df_res = df1.merge(df2, on=['G-S'], how='inner').assign(COUNT1=lambda x: x['COUNT1_x'] + x['COUNT1_y'], COUNT2=lambda x: x['COUNT2_x'] + x['COUNT2_y']).drop(columns=['COUNT1_x', 'COUNT1_y', 'COUNT2_x', 'COUNT2_y'])

这里通过.assign()方法在合并后的DataFrame上直接计算求和后的新列,再链式调用.drop()删除合并产生的冗余列,全程用一行代码完成所有操作,完全基于pd.merge()实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:33:23