Мы могли бы сделать один вкладыш из ваших шагов, используя suffixes
аргумент и on
вместо left_on, right_on
плюс плюс цепочка методов с drop
:
df1.merge(df2, on=['c1','c2'], suffixes=['_1', '_2']).drop(['c1', 'c2'], axis=1)
выход
ID_1 c3 ID_2
0 1 32 1
1 3 11 1
2 2 34 2
3 4 3 3
Чтобы сделать его точно таким же, как вывод OP:
df1.merge(df2, on=['c1','c2'], suffixes=['', '_2']).drop(['c1', 'c2'], axis=1).rename(columns={"id_2": "df2_id"})