Вы можете использовать набор пересечения. Обратите внимание, что если вы используете pandas
, производительность не будет хорошей, но возможно
inter = ds.A.str.split(',').apply(set) - ds.B.str.split(',').apply(set).values
df['C'] = inter.str.join(',')
Хотя я бы предложил чистый подход Python.
df['C'] = [','.join(set(a.split(',')) - set(b.split(','))) for a,b in zip(ds.A, ds.B)]
Сроки ясны
%timeit [','.join(set(a.split(',')) - set(b.split(','))) for a,b in zip(ds.A, ds.B)]
40.4 µs ± 1.08 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
%timeit ds.A.str.split(',').apply(set) - ds.B.str.split(',').apply(set).values
730 µs ± 27 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)