对长度不同的两个数据框的列求和

xin*_*ang 4 python dataframe pandas

我有两个数据框?

df1

    country  value
0      aa      1
1      bb      1
2      cc      5
Run Code Online (Sandbox Code Playgroud)

df2

     country  value
0      cc      8
1      aa      2
2      MM      1
3      FF      6
Run Code Online (Sandbox Code Playgroud)

如何获得该数据框(df1+ df2),如下所示:

    country  value
0      aa      3
1      bb      1
2      MM      1
3      cc      13
4      FF      6
Run Code Online (Sandbox Code Playgroud)

Sco*_*ton 5

使用set_indexaddfill_value=0

df1.set_index('country').add(df2.set_index('country'),fill_value=0).reset_index()
Run Code Online (Sandbox Code Playgroud)

输出:

  country  value
0      FF    6.0
1      MM    1.0
2      aa    3.0
3      bb    1.0
4      cc   13.0
Run Code Online (Sandbox Code Playgroud)


cs9*_*s95 5

您可以先使用连接pd.concat,然后使用df.groupby

In [390]: pd.concat([df, df2]).groupby('country', as_index=False).sum()
Out[390]: 
  country  value
0      FF      6
1      MM      1
2      aa      3
3      bb      1
4      cc     13
Run Code Online (Sandbox Code Playgroud)