合并数据框,并添加通用元素的值

时间:2018-09-10 05:00:37

标签: mysql excel database pandas dataframe

我有多个这样的数据集 数据集1

索引|名称| val |

1 |  a   | 1  | 
2 |  b   | 0  |
3 |  c   | 3  |

数据集2

索引|名称| val |

1 |  g   | 4  | 
2 |  a   | 2  |
3 |  k   | 3  |
4 |  l   | 2  |

我想以以下方式组合这些数据集:如果两个数据集都有一个具有相同元素名称的行,在此示例中为“ a”,则我只希望合并的数据集只有一行,其中值是a与a的和,在这种情况下,组合行a的val为3(2 + 1)。元素的索引号无关紧要。有没有一种有效的方法可以在excel本身中做到这一点?我是查询数据的新手,但我想学习。如果我可以用pandas(我想让自己熟悉这种语言)或sql做到这一点,我会这样做。我的数据集大小不同

2 个答案:

答案 0 :(得分:2)

在Sql中,您可以尝试以下查询:

select name,sum(val)
from
(select index,name,val from dataset1
union all
select index,name,val from dataset2) tmp
group by name

在熊猫中:

df3=pd.concat([df1,df2],ignore_index=True)
df3.groupby(['name']).sum()

答案 1 :(得分:2)

使用:

df3 = df1.groupby('name').sum().add(df2.groupby('name').sum(), fill_value=0).reset_index()
df3['val'] = df3.fillna(0)[' val']+df3.fillna(0)['val']
df3 = df3.drop([' val'], axis=1)
print(df3)

输出:

    name   index   val
0    a     3.0     3.0 
1    b     2.0     0.0 
2    c     3.0     3.0 
3    g     1.0     4.0 
4    k     3.0     3.0 
5    l     4.0     2.0