Получение набора списка из списка строк

#pandas #jupyter-notebook

#панды #юпитер-записная книжка

Вопрос:

У меня есть этот фрейм данных:

 df = pd.DataFrame({"c1":["["text","text2"]","["bla","bla","bla"]"]})  

и я удаляюсь, [] и "" :

 df["c2"] = df["c1"].apply(lambda x:re.sub('[["]]', "", x))  

затем я хочу добавить df['c2'] в список:

 list = df['c2'].to_list()  

Тогда я получу это: ['text,text2', 'bla,bla,bla']

Пока все хорошо. Но тогда мне нужен список только с уникальными значениями, которые я мог бы использовать set(list) .

Проблема в том, что вместо ['text,text2', 'bla,bla,bla'] того, чтобы мне нужно было сделать ['text','text2', 'bla','bla','bla'] это, когда я применяю » набор(список) Я бы получил то, что ожидаю:

['text','text2','bla']

Ответ №1:

Во-первых, не используйте list в качестве переменной. Во-вторых, как только вы получите ['text,text2',...] , вы сможете использовать str.split . Таким образом, ваш набор будет

 {y for x in df['c2'].str.split(',') for y in x}  

Выход:

 {'bla', 'text', 'text2'}  

Примечание: Вы можете использовать регулярное выражение напрямую для извлечения всех шаблонов между " :

 set(df['c1'].str.extractall('"([^"] )"')[0])  

Ответ №2:

Попробуйте это:

 new = [] for l in list:  new.extend(l.split(',') ) new = list(set(new))  

в результате new чего

 ['text2', 'text', 'bla']