Я думаю, что-то вроде следующего с использованием full outer join
должно работать (вы можете записать строки в выходной таблице, если необходимо):
import pandas как pd import numpy как np
df1 = pd.DataFrame([[1, 1, 5, 1], [2, 2, 5, 1]], columns = ['A','B','C', 'Y'])
df2 = pd.DataFrame([[1, 1, 6, 0], [1, 2, 6, 0], [3, 3, 6, 0], [3, 3, 7, 0]], columns = ['A','B','C', 'Y'])
df = pd.merge(df1, df2, on=['A','B'], how='outer')
df['C'] = df.apply(lambda row: row.C_x if not np.isnan(row.C_x) else row.C_y, axis=1).astype(int)
df['Y'] = df.apply(lambda row: row.Y_x if not np.isnan(row.C_x) else row.Y_y, axis=1).astype(int)
df = df[['A','B','C','Y']]
df.head()
# A B C Y
#0 1 1 5 1
#1 2 2 5 1
#2 1 2 6 0
#3 3 3 6 0
#4 3 3 7 0