组合Dataframe,并添加公共元素的值

v6ylcynt  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(353)

我有多个像这样的数据集1
索引|名称|值|

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

数据集2
索引|名称|值|

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

我希望以这样一种方式组合这些数据集:如果两个数据集都有一个具有公共元素名称的行,在本例中为“a”,我希望组合的数据集只有一行,其中值是a和a的和,在这种情况下,组合的行a的值为3(2+1)。元素的索引号并不重要。在excel中有没有一种有效的方法可以做到这一点?我对查询数据很陌生,但我正在努力学习。如果我能在pandas(我正在努力让自己熟悉这门语言)或sql中做到这一点,我会这么做。我的数据集大小不同

gblwokeq

gblwokeq1#

用途:

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
yftpprvb

yftpprvb2#

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

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

Pandas:

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

相关问题