import pandas as pd
df1 = pd.DataFrame({'Name': ['A', 'A', 'B', 'B'],
'grade': [1, 2, 1, 2],
'Source': [0, 0, 0, 0],})
df2 = pd.DataFrame({'Name': ['A', 'A', 'B'],
'grade': [1, 2, 2],
'Source': [2, 3, 3],})
res = pd.merge(df1,df2,how ='left',on = ['Name', 'grade'])
res = res.fillna(value = 0)
res.rename(columns = {'Source_y': 'Source',}, inplace = True)
print(res[['Name', 'grade', 'Source']])