我有多个这样的数据集 数据集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做到这一点,我会这样做。我的数据集大小不同
答案 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