сгруппировать и разделить, затем применить список и повернуть, чтобы продиктовать как:
import itertools
(df.groupby('Company').apply(lambda x:
list(map(int,itertools.chain.from_iterable(x['N'].str.split(';'))))).to_dict())
{'A': [1234, 878, 3434, 5678, 873],
'B': [539, 0, 123],
'C': [155, 741, 655, 5377, 454]}
вы также можете использовать sum для составления списков, но не рекомендуется для больших данных (из-за проблем с производительностью лучше использовать itertools)
РЕДАКТИРОВАТЬ для нарезки 2 элементов из списка используйте:
import itertools
(df.groupby('Company').apply(lambda x:
list(map(int,[k[:2] for k in itertools.chain.from_iterable(x['N'].str.split(';'))]))).to_dict())
это выводит:
{'A': [12, 87, 34, 56, 87], 'B': [53, 0, 12], 'C': [15, 74, 65, 53, 45]}
Обратите внимание на использование map()
здесь, оно используется для преобразования элементов списка из строки в int. Поскольку исходный dtype - это строка, а мы делаем str.split()
, в списке есть строки.