Pandas DataFrame合并求和列

时间:2014-04-29 09:50:07

标签: python pandas dataframe

我尝试合并两个DataFrames求和列值。

DF1

   id        name        weight        
   1            A        0
   2            B        10
   3            C        10

DF2

   id        name        weight        
   2            B        15
   3            C        10

我需要在合并期间对公共列中的类似值求和权重值。

merge = pd.merge(df1,df2, how='inner')

所以输出结果如下。

   id        name        weight        
   2            B        25
   3            C        20

3 个答案:

答案 0 :(得分:8)

In [41]: pd.merge(df1, df2, on=['id', 'name']).set_index(['id', 'name']).sum(axis=1)
Out[41]: 
id  name
2   B       25
3   C       20
dtype: int64

答案 1 :(得分:7)

如果将公共列设置为索引,则可以将两个数据帧相加,这比合并要简单得多:

In [30]: df1 = df1.set_index(['id', 'name'])

In [31]: df2 = df2.set_index(['id', 'name'])

In [32]: df1 + df2
Out[32]: 
         weight
id name        
1  A        NaN
2  B         25
3  C         20

答案 2 :(得分:1)

如果您要汇总多个列,则此解决方案也适用。假设数据帧

>>> df1
   id name  weight  height
0   1    A       0       5
1   2    B      10      10
2   3    C      10      15
>>> df2
   id name  weight  height
0   2    B      25      20
1   3    C      20      30

您可以将它们串联起来并按索引列分组。

>>> pd.concat([df1, df2]).groupby(['id', 'name']).sum().reset_index()
   id name  weight  height
0   1    A       0       5
1   2    B      35      30
2   3    C      30      45