от
Я учусь Python и взяли набор данных Kaggle для более глубокого понимания данных, исследования и визуализация в Python. У меня есть столбец "кухни" в ниже формат таблицы данных:
North Indian, Mughlai, Chinese
Chinese, North Indian, Thai
Cafe, Mexican, Italian
South Indian, North Indian
North Indian, Rajasthani
North Indian
North Indian, South Indian, Andhra, Chinese
Я хочу разделить этот столбец на запятую и извлечь уникальные значения из этого столбца. Эти уникальные значения я хочу, чтобы добавить обратно в исходный фрейм данных, как новые столбцы. На основе других постов, я пробовал следующие: 1) Скрытая в списке и установить и расплющить, чтобы получить уникальные значения Функция тип серия возвращается на колонки. Преобразования его в список, а затем установить, выдает ошибку

type(fl1.cuisines)
pandas.core.series.Series

cuisines_type = fl1['cuisines'].tolist()
type(cuisines_type)
list

cuisines_type
#this returns list of cuisines

cuisines_set = set([ a for b in cuisines_type for a in b])
TypeError: 'float' object is not iterable

2) преобразовать его в массив и список
cs = pd.unique(fl1['cuisines'].str.split(',',expand=True).stack())

type(cs)
Out[141]: numpy.ndarray

cs.tolist()

Этот список возвращает. Но я не могу удалить пробелы, которые были добавлены некоторые элементы. Ожидаемые результаты-это уникальный список блюд и добавления ее обратно в виде столбцов: Северной Индии | Кухни | Китайская

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста подтвердите адрес электронной почты.

3 Ответы

0 голосов
от
Я считаю, нужно
Series.str.get_dummies
и если можно дубли удалить их
max
на колонки - выход всегда
0
или
1
из
sum
для значений граф:
df = fl1.cuisines.str.get_dummies(', ').max(level=0, axis=1)
#if need count values
#df = fl1.cuisines.str.get_dummies(', ').sum(level=0, axis=1)
print (df)
   Andhra  Cafe  Chinese  Italian  Mexican  Mughlai  North Indian  Rajasthani  \
0       0     0        1        0        0        1             1           0   
1       0     0        1        0        0        0             1           0   
2       0     1        0        1        1        0             0           0   
3       0     0        0        0        0        0             1           0   
4       0     0        0        0        0        0             1           1   
5       0     0        0        0        0        0             1           0   
6       1     0        1        0        0        0             1           0   

   South Indian  Thai  
0             0     0  
1             0     1  
2             0     0  
3             1     0  
4             0     0  
5             0     0  
6             1     0  
Аналогично можно использовать решение с
get_dummies
:
df = pd.get_dummies(fl1['cuisines'].str.split(', ',expand=True).stack()).max(level=0)
0 голосов
от
Сохранить тьфу а затем КШМ использовать панд
.read_csv()
способ, чтобы загрузить его. Затем сделать разбор каждого столбца размещения каждого столбца в соответствующих списках, то принимать уникальные значения в списке. Создать новую таблицу данных со значениями от этих новых списков с уникальными записями.
df = pd.read_csv('cuisine.csv')
column_1_lst = list(set(df.iloc[:,0].values.tolist()))
.                                                        # period here means up to, like (1, 2,....,n) notation
.
column_n_lst = list(set(df.iloc[:,n].values.tolist()))

new_dataframe = pd.DataFrame()
new_dataframe['Column_1_unique'] = column_1_lst
.
.
new_dataframe['Column_n_unique'] = column_n_lst
Примечание: просто убедитесь, что все ваши списки имеют одинаковую длину для этой работы. Надеюсь, что это помогает :))
0 голосов
от
Я хочу разделить этот столбец на запятую и извлечь уникальные значения из этого колонки. Эти уникальные значения я хочу, чтобы добавить обратно в исходные данные рама как новые столбцы
a = list(set([i.strip() for i in ','.join(df['cuisine']).split(',')]))
Выход
['Thai',
 'Mughlai',
 'Mexican',
 'Rajasthani',
 'Andhra',
 'Chinese',
 'North Indian',
 'Cafe',
 'Italian',
 'South Indian']
использовать
pd.assign
, чтобы добавить эти столбцы вернуться к исходной ДФ
df.assign(**{i:0 for i in a})
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...