Я предположил, что общей частью "кода" из "df2" являются символы перед "-".Я также предположил, что из «df1» нам нужны «lamer_url_1», «shopee_url_1», а из «df2» мы хотим «lamer_url_2», «shopee_url_2» (исправьте меня в комментарии, если я ошибаюсь, чтобы я мог полировать код):
df1.set_index(df1['code'], inplace=True)
df2.set_index(df2['code'].apply(lambda x: x.split('-')[0]), inplace=True)
df2.index.names = ['code_join']
df3 = pd.merge(df2[['code', 'lamer_url_2', 'shopee_url_2']],
df1[['lamer_url_1', 'shopee_url_1']],
left_index=True, right_index=True)