我正在寻找合并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
答案 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)