Можно сделать:
lst = [d.values.tolist() for (k,d) in df.groupby('B', sort=False)]
# check
for i in range(len(lst)): print(lst[i])
Вывод:
[[12, 'bob', 32, 'abc', 123]]
[[12, 'jan', 34, 'fbc', 23], [14, 'jan', 32, 'ac', 133]]
[[12, 'cat', 32, 'abc', 123]]