Вы можете использовать понимание списка с помощью permutations
:
from itertools import permutations
df = pd.DataFrame({'id': [1, 2], 'list': [['foo', 'bar'], ['cat', 'dog']]})
>>> pd.DataFrame([[id_, list(perm)]
for id_, list_items in df.values for perm in permutations(list_items)],
columns=['id', 'list'])
id list
0 1 [foo, bar]
1 1 [bar, foo]
2 2 [cat, dog]
3 2 [dog, cat]
В зависимости от точной структуры содержимого списка, вам может понадобиться сначала проанализировать.