l = df.values.tolist()
['|'.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]]
['James Jacobs|Tim Turner', 'Mickey Mouse|Mini Mouse',
    'Mike Mills|Billy McGill|Natasha Tsaka']
Merged two dataframe columns with lists in order of lists