Как объединить элементы из одного столбца с помощью панд в python?

#python #pandas #dataframe

Вопрос:

 print(dfs["Categorias"])
 

Я понимаю это:

 0                         wordpress, criação de sites
1                                    criação de sites
2             e-commerce, criação de sites, wordpress
3                           marketing digital, vendas
 

Как я могу удалить повторяющиеся элементы и присоединиться к уникальным значениям в списке?

Спасибо

Комментарии:

1. И как именно вы хотите, чтобы выглядел результат?

2. Что вы уже пробовали?

Ответ №1:

Вы ищете что-то подобное:

Разделите каждую строку на список и разнесите этот список на строки, затем получите уникальные значения столбца.

 >>> df['Categorias'].str.split(r',s ').explode().unique().tolist()
['wordpress', 'criação de sites', 'e-commerce', 'marketing digital', 'vendas']
 

Шаг за шагом:

 >>> df = df['Categorias'].str.split(r',s ')
0
0                [wordpress, criação de sites]
1                           [criação de sites]
2    [e-commerce, criação de sites, wordpress]
3                  [marketing digital, vendas]
Name: Categorias, dtype: object

>>> df = df.explode()
0
0            wordpress
0     criação de sites
1     criação de sites
2           e-commerce
2     criação de sites
2            wordpress
3    marketing digital
3               vendas
Name: Categorias, dtype: object

>>> df.unique().tolist()
['wordpress', 'criação de sites', 'e-commerce', 'marketing digital', 'vendas']
 

Комментарии:

1. Можете ли вы подробнее рассказать о том, что делает код? Это выглядит интересно.

2. @Ашокарора. Я обновил свой ответ некоторыми объяснениями и пошаговыми командами.

Ответ №2:

Вы могли бы использовать наборы и itertools.chain :

 from itertools import chain
set(chain(*df['Categorias'].str.split(',s ')))
 

Выход:

 {'criação de sites', 'e-commerce', 'marketing digital', 'vendas', 'wordpress'}
 

Необязательно, как список:

 >>> list(set(chain(*df['Categorias'].str.split(',s '))))
['criação de sites', 'e-commerce', 'marketing digital', 'vendas', 'wordpress']
 

Ответ №3:

Один из способов-преобразовать столбец фрейма данных в список, удалить дубликаты с помощью набора, а затем объединить их с помощью строковых операций.

 >>> ', '.join(set(df['Categorias'].str.split(', ').explode().tolist()))