l = df.values.tolist()
df['Full Names'] = ['|'.join(n) for n in [[' '.join(z) for z in zip(*[s.
    split('|') for s in r]) if z[1] != 'Smith'] for r in l]]
df
Объединены два столбца данных со списками в порядке списков