如何合并两个数据帧并对列的值求和

cha*_*dru 8 python data-analysis dataframe pandas

我有两个数据帧

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

df2
Name class value
Sri   1     5
viv   4     4
Run Code Online (Sandbox Code Playgroud)

我想要的输出是,

df,

Name class value
Sri   2     10
Ram   2     8
viv   7     8
Run Code Online (Sandbox Code Playgroud)

请帮助,提前谢谢!

jez*_*ael 7

我认为需要set_index两个DataFrameS,add和最后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
Run Code Online (Sandbox Code Playgroud)

如果值Name不是唯一的使用groupby和聚合sum:

df = df1.groupby('Name').sum().add(df2.groupby('Name').sum(), fill_value=0).reset_index()
Run Code Online (Sandbox Code Playgroud)


jpp*_*jpp 7

pd.concat+ groupby+sum

您可以连接您的个人数据框,然后按您的关键列分组:

df = pd.concat([df1, df2])\
       .groupby('Name')['class', 'value']\
       .sum().reset_index()

print(df)

  Name  class  value
0  Ram      2      8
1  Sri      2     10
2  viv      7      8
Run Code Online (Sandbox Code Playgroud)