我有两个具有唯一ID的数据框和匹配的列,如下所示:
df1 = pd.DataFrame({"ID" : [1,2,3], "Col1": [12,7,4], "Col2": [1,7,2]})
ID Col1 Col2
1 12 1
2 7 7
3 4 2
df2 = pd.DataFrame({"ID" : [2,3,5], "Col1": [3,4,3], "Col2": [5,5,2], "Col3": [0,11,3]})
ID Col1 Col2 Col3
2 3 5 0
3 4 5 11
5 3 2 3
我想要做的是在ID列上合并这些数据帧并对匹配的数据进行求和。不匹配的列应保持不变。
它应该变成这样的东西
ID Col1 Col2 Col3
1 12 1 NaN
2 10 12 0
3 8 7 11
5 3 2 3
我尝试将一个df添加到另一个,但它不起作用。
答案 0 :(得分:3)
使用concat
,groupby
和sum
即
ndf = pd.concat([df1,df2]).groupby('ID').sum()
Col1 Col2 Col3
ID
1 12 1 NaN
2 10 12 0.0
3 8 7 11.0
5 3 2 3.0