python – Como juntar três ou mais arquivos CSVs com algo do tipo PROCV e concatenando certas colunas

Arquivo1.csv

Codigo  Nome    Catego  Geral                   Model   Ano
A1      JOGO    LAMA    FZ25-A,YS250,FA250AB    44CF    2017
A2      EMBLE   LAMA    FZ25-A,YS250,FA250AB    44CF    2017
A3      TUBO    ADMI    FZ25-A,YS250,FA250AB    44CF    2017
A4      PRESI   ADMI    FZ25-A,YS250,FA250AB    44CF    2017
A5      PARA    ADMI    FZ25-A,YS250,FA250AB    44CF    2017
A6      AR      ADMI    FZ25-A,YS250,FA250AB    44CF    2017
A7      PRESI   ADMI    FZ25-A,YS250,FA250AB    44CF    2017
A8      CILI    CABE    FZ25-A,YS250,FA250AB    44CF    2017

Arquivo2.csv

Codigo  Nome    Catego  Geral                   Model   Ano
A1      JOGO    LAMA    FZ25-A|YS250|FA250AB    BC51    2018
A2      EMBLE   LAMA    FZ25-A|YS250|FA250AB    BC51    2018
B1      CHAVE   LAMA    FZ25-A|YS250|FA250AB    BC51    2018
B2      CHAVE   LAMA    FZ25-A|YS250|FA250AB    BC51    2018
B3      MANU    LAMA    FZ25-A|YS250|FA250AB    BC51    2018
B4      AMOR    LAMA    FZ25-A|YS250|FA250AB    BC51    2018
B5      GUIA    CABE    FZ25-A|YS250|FA250AB    BC51    2018

Arquivo3.csv

Codigo  Nome    Catego  Geral                   Model   Ano
A8      CILI    CABE    FZ25-A|YS250|FA250AB    BC54    2021
B5      GUIA    CABE    FZ25-A|YS250|FA250AB    BC54    2021
C1      ANEL    CABE    FZ25-A|YS250|FA250AB    BC54    2021
C2      PARA    CABE    FZ25-A|YS250|FA250AB    BC54    2021
A6      AR      ADMI    FZ25-A|YS250|FA250AB    BC54    2021
A7      PRESI   ADMI    FZ25-A|YS250|FA250AB    BC54    2021
A3      TUBO    ADMI    FZ25-A|YS250|FA250AB    BC54    2021
B2      CHAV    LAMA    FZ25-A|YS250|FA250AB    BC54    2021

Fiz algo assim:

import tabula 
import tabulate
import pandas as pd
import numpy as np
import csv
import csvs
import ssl
from tabula import read_pdf
from pandas import read_csv
from pandas import Series, DataFrame
primeiro = pd.read_csv('/content/Arquivo1.csv')
segundo = pd.read_csv('/content/Arquivo2.csv')
terceiro = pd.read_csv('/content/Arquivo3.csv')
df = pd.merge(primeiro, segundo, on='ColCod', how='outer') # Aqui faço algo do tipo PROCV
df ('Model') = df ('Model_x'). map(str) + ' | ' + df ('Model_y'). map(str) # Aqui concateno coluna Model
df ('Ano') = df ('Ano_x'). map(str) + ' | ' + df ('Ano_y'). map(str) # Aqui concateno coluna Ano
df.drop('Model_x', axis=1, inplace=True) # Deleto o que sobrou
df.drop('Ano_x', axis=1, inplace=True)
df.drop('Model_y', axis=1, inplace=True)
df.drop('Ano_y', axis=1, inplace=True)
df.to_csv (r'/content/Junta.csv', index = False, header = True, encoding='cp1252', na_rep = 'NaN') # Salvo
somados = pd.read_csv('/content/Junta.csv') # Leio trocando para somados
df = pd.merge(somados, terceiro, on='ColCod', how='outer')
df ('Model') = df ('Model_x'). map(str) + ' | ' + df ('Model_y'). map(str)
df ('Ano') = df ('Ano_x'). map(str) + ' | ' + df ('Ano_y'). map(str)
df.drop('Model_x', axis=1, inplace=True)
df.drop('Ano_x', axis=1, inplace=True)
df.drop('Model_y', axis=1, inplace=True)
df.drop('Ano_y', axis=1, inplace=True)
df.to_csv (r'/content/Junta3.csv', index = False, header = True, encoding='cp1252', na_rep = 'NaN')
df

Se você fizer isso vai obter o seguinte resultado:
inserir a descrição da imagem aqui

Mas o resultado correto é o mostrado abaixo.
Então como faço para obter este resultado abaixo:

Arquivo Junta3.csv

Codigo  Nome    Catego  Geral                   Model       Ano
A1      JOGO    LAMA    FZ25-A,YS250,FA250AB    44CF|BC51   2017|2018
A2      EMBLE   LAMA    FZ25-A,YS250,FA250AB    44CF|BC51   2017|2018
A3      TUBO    ADMI    FZ25-A,YS250,FA250AB    44CF|BC54   2017|2021
A4      PRESI   ADMI    FZ25-A,YS250,FA250AB    44CF        2017
A5      PARA    ADMI    FZ25-A,YS250,FA250AB    44CF        2017
A6      AR      ADMI    FZ25-A,YS250,FA250AB    44CF|BC54   2017|2021
A7      PRESI   ADMI    FZ25-A,YS250,FA250AB    44CF|BC54   2017|2021
A8      CILI    CABE    FZ25-A,YS250,FA250AB    44CF|BC54   2017|2021
B1      CHAVE   LAMA    FZ25-A|YS250|FA250AB    BC51        2018
B2      CHAVE   LAMA    FZ25-A|YS250|FA250AB    BC51|BC54    2018|2021
B3      MANU    LAMA    FZ25-A|YS250|FA250AB    BC51        2018
B4      AMOR    LAMA    FZ25-A|YS250|FA250AB    BC51        2018
B5      GUIA    CABE    FZ25-A|YS250|FA250AB    BC51|BC54   2018|2021
C1      ANEL    CABE    FZ25-A|YS250|FA250AB    BC54        2021
C2      PARA    CABE    FZ25-A|YS250|FA250AB    BC54        2021

Por favor, o desafio é grande, em Excel já fiz e deu certo, então quer dizer que usando Python com Pandas também é possível, quem puder ajudar agradeço