how to merge two dataframes and sum the values of columns

chandru picture chandru · Mar 5, 2018 · Viewed 8.7k times · Source

I have two dataframes

df1
Name class value
Sri   1     5
Ram   2     8
viv   3     4

df2
Name class value
Sri   1     5
viv   4     4

My desired output is,

df,

Name class value
Sri   2     10
Ram   2     8
viv   7     8

Please help, thanks in advance!

Answer

jezrael picture jezrael · Mar 5, 2018

I think need set_index for both DataFrames, add and last reset_index:

df = df1.set_index('Name').add(df2.set_index('Name'), fill_value=0).reset_index()
print (df)
  Name  class  value
0  Ram    2.0    8.0
1  Sri    2.0   10.0
2  viv    7.0    8.0

If values in Name are not unique use groupby and aggregate sum:

df = df1.groupby('Name').sum().add(df2.groupby('Name').sum(), fill_value=0).reset_index()