объединить строковый столбец с набором списка, используя Python - PullRequest
0 голосов
/ 29 мая 2018

У меня есть Pandas DataFrame, как это:

id     fruits
01     Apple, Apricot
02     Apple, Banana, Clementine, Pear
03     Orange, Pineapple, Pear

Как я могу получить список фруктов, как этот, удалив дубликаты?

['Apple','Apricot','Banana','Clementine','Orange','Pear','Pineapple']

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

с использованием str.extractall & drop_duplicates

df.fruits.str.extractall(r'(\w+)').drop_duplicates()[0].tolist()

выходы:

['Apple', 'Apricot', 'Banana', 'Clementine', 'Pear', 'Orange', 'Pineapple']
0 голосов
/ 29 мая 2018

попробуйте это,

set(', '.join(df['fruits']).split(', '))

Вывод:

set(['Apple', 'Apricot', 'Pear', 'Pineapple', 'Orange', 'Banana', 'Clementine'])
0 голосов
/ 29 мая 2018

Вы можете сгладить list с, созданный split, преобразовать в set с для уникального и до list с:

a = list(set([item for sublist in df['fruits'].str.split(', ') for item in sublist]))
print (a)
['Pineapple', 'Clementine', 'Apple', 'Banana', 'Apricot', 'Orange', 'Pear']

Или:

a = df['fruits'].str.split(', ', expand=True).stack().drop_duplicates().tolist()
print (a)
['Apple', 'Apricot', 'Banana', 'Clementine', 'Pear', 'Orange', 'Pineapple']

Спасибо @kabanus за альтернативу:

a = list(set(sum(df['fruits'].str.split(', '),[])))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...