如何在执行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
相关产品推荐
相关产品推荐

