合并只有几个相同项目的两个数据框

时间:2019-08-02 19:55:49

标签: python python-3.x pandas dataframe merge

我正在寻找合并2个数据帧与项目和一些数字。假设第一列是名称,第二列是名称获得多少钱,第三列是他们工作了多少小时。我正在寻找一种在示例中向您展示的方式合并它们。希望一切都会清楚。我在这里没有尝试任何特别的事情,我想应该有一个功能可以使它壮观。

谢谢你们!

第一个数据框

name  money hours 
------------------
name0 1234  50
name1 4321  50
name2 1234  40
name3 1234  50
name4 4321  50
name5 1234  40
name6 1234  50
name7 4321  50
name8 1234  40

第二个数据框

name  money hours 
------------------
name1 200   4
name4 100   5
name6 300   6
name7 300   10
name8 400   14
name1 100   10
name7 200   5
name7 100   3

输出应如下所示:

name  money hours 
------------------
name0 1234  50
name1 4621  64
name2 1234  40
name3 1234  50
name4 4421  55
name5 1234  40
name6 1534  56
name7 4921  68
name8 1634  54

2 个答案:

答案 0 :(得分:4)

我认为这不是merge,因为您有重复的名称需要汇总。看起来像是concat + groupby + sum


pd.concat([df1, df2]).groupby('name', as_index=False).sum()

    name  money  hours
0  name0   1234     50
1  name1   4621     64
2  name2   1234     40
3  name3   1234     50
4  name4   4421     55
5  name5   1234     40
6  name6   1534     56
7  name7   4921     68
8  name8   1634     54

答案 1 :(得分:1)

尝试如下

df3 = df2.groupby('name',as_index=False).sum()
result = df1.merge(df3, on='name', how='left')
result['hours']=result.hours_x+result.hours_y.fillna(0)
result['money']=result.money_x+result.money_y.fillna(0)