Я думаю, что использование наборов интуитивно понятно.Тогда вы можете использовать >=
в качестве набора содержимого
df[df.tags.apply(set) >= {'a'}]
val tags
0 5 [a, b, c]
Альтернативой Numpy будет
tags = df['tags']
n = len(tags)
out = np.zeros(n, np.bool8)
i = np.arange(n).repeat(tags.str.len())
np.logical_or.at(out, i, np.concatenate(tags) == 'a')
df[out]
Per @ JonClements
Вы можете использовать set.issubset
в map
(очень умный)
df[df.tags.map({'a'}.issubset)]
val tags
0 5 [a, b, c]