Python cria uma coluna com base em se uma string é uma substring no pandas Dataframe

Uma das colunas nos meus quadros de dados são nomes de identificadores com uma convenção de nomenclatura específica. Quando foi interesado, não foi inserido corretamente. Eu queria perguntar como posso encontrar palavras-chave específicas para inserir em sua própria coluna em python. Talvez algum tipo de loop?

Exemplo:

types = ['XYZ', 'OPQ', 'MNO', 'ABC']

df atual:

ID  ID Name
45  I_name_ls_XYZ_random
46  I_22_name_ABC_random
47  I_name_ls_XYZ_random_45
48  I_name_ls_MNO_random
49  I_ls_OPQ_random_name
50  I_name_ls_ABC_random
51  I_name_ls_XYZ_random
52  I_name_MNO_random

Resultado desejado:

ID  ID Name                types
45  I_name_ls_XYZ_random    XYZ
46  I_22_name_ABC_random    ABC
47  I_name_ls_XYZ_random_45 XYZ
48  I_name_ls_MNO_random    MNO
49  I_ls_OPQ_random_name    OPQ
50  I_name_ls_ABC_random    ABC
51  I_name_ls_XYZ_random    XYZ
52  I_name_MNO_random       MNO

Obrigado

questionAnswers(2)

yourAnswerToTheQuestion