Нужно создать множество из значений подстрок в значениях признака
Есть признак в DataFrame, значения у которого - строка, содержащая разное число подстрок через запятую: df.head - ниже:
0 ['European', 'French', 'International']
1 NaN
2 ['Japanese', 'Sushi', 'Asian', 'Grill', 'Veget...
3 NaN
4 ['German', 'Central European', 'Vegetarian Fri...
Name: Cuisine Style, dtype: object
И так далее, до 11 подстрок в каждой.
Как извлечь вручную каждое значение каждого элемента строки в нужном виде?
Нашла, а в цикл или функцию, чтобы все прогнать и загнать в множество, никак не получается.
df['Cuisine Style']= df['Cuisine Style'].apply(lambda s:
s.replace('[','') if isinstance(s, str) else s)
df['Cuisine Style']= df['Cuisine Style'].apply(lambda s: s.replace(']','')
if isinstance(s, str) else s)
cuisine_set = set()
for string in df['Cuisine Style']:
cui_list=df['Cuisine Style'][string].split(',')
for cuisine in cui_list:
cuisine=cuisine[1:-1]
if cuisine in cuisine_set:
continue
else:
cuisine_set.add(cuisine)
cuisine_set
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Если я правильно понял вопрос:
from yaml import safe_load # pip install pyyaml
res = df["Cuisine_Style"].apply(safe_load).to_list()
результат:
In [9]: res
Out[9]: [['European', 'French'], ['Italian']]
Исходный фрейм:
In [10]: df
Out[10]:
Cuisine_Style
0 ['European', 'French']
1 ['Italian']
UPD:
На выходе должно получится множество всех возможных из столбца значений {'European', 'French', 'Italian'.... }
In [128]: res = df["Cuisine Style"].dropna().map(safe_load).sum()
In [129]: len(res)
Out[129]: 95613
In [130]: len(set(res))
Out[130]: 125
In [131]: set(res)
Out[131]:
{'Afghani',
'African',
'Albanian',
'American',
'Arabic',
'Argentinean',
'Armenian',
'Asian',
'Australian',
'Austrian',
'Azerbaijani',
'Balti',
'Bangladeshi',
'Bar',
'Barbecue',
'Belgian',
'Brazilian',
...