Как удалить ненужные пробелы и скобки из ячеек столбца
Уже знакомая таблица и вопрос:
| name | |
|---|---|
| 0 | ('mike, rick, morty' ) |
| 1 | ( 'tot, piter, carl') |
Как удалить ненужные скобки и пробелы? Нужен такой результат:
| name | |
|---|---|
| 0 | mike, rick, morty |
| 1 | tot, piter, carl |
Код, образующий таблицу (изменения нужны в cтолбце gr):
d = {'name': ['mike, rick, morty', 'tot, piter, carl', 'brick, nick', 'rick, reaven, bart, homer', 'rick, morty'], 'Date': ['11/05/2011', '9/02/2010', '1/01/2014', '12/20/2020', '9/30/2009'], 'Address': ['AR', 'YU', 'RU', 'EU', 'BY']}
df = pd.DataFrame(data = d)
df['name1'] = df.name.str.split(',')
df['gr'] = df.name.apply(lambda x: list(combinations(df['name1'][df.index[df["name"].eq(x)][0]], 2)))
df = df.explode('gr')
display(df)
Ответы (1 шт):
У вас там во-первых кортежи лежат, поэтому и скобки, а во-вторых там лишний пробел тянется у элементов из-за пробела после запятой в исходной строке.
Лишние пробелы можно победить, добавив регулярку в split, означающую "0 или более пробелов":
df['name1'] = df.name.str.split(',\s*')
^^^
А превратить кортежи в строки можно с помощью str.join, в самом конце кода добавив строку:
df['gr'] = df.gr.str.join(',')
Столбец gr после этого будет выглядеть так:
gr
mike,rick
mike,morty
rick,morty
...
split и join - это как бы взаимно обратные операции, одна делит строку на коллекцию по определённому символу, а другая наоборот склеивает элементы коллекции в строку через указанный символ.