#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']