#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()))