Ламда-функция для токенизации - PullRequest
0 голосов
/ 11 марта 2020

Я работаю над проектом для прогнозирования цен на жилье, и один из моих столбцов в наборе данных состоит из размера (т.е. количества спален)

, поэтому, когда я запускаю это df3['size'].unique(), я получаю следующий вывод

array(['2 BHK', '4 Bedroom', '3 BHK', '4 BHK', '6 Bedroom', '3 Bedroom',
   '1 BHK', '1 RK', '1 Bedroom', '8 Bedroom', '2 Bedroom',
   '7 Bedroom', '5 BHK', '7 BHK', '6 BHK', '5 Bedroom', '11 BHK',
   '9 BHK', '9 Bedroom', '27 BHK', '10 Bedroom', '11 Bedroom',
   '10 BHK', '19 BHK', '16 BHK', '43 Bedroom', '14 BHK', '8 BHK',
   '12 Bedroom', '13 BHK', '18 Bedroom'], dtype=object)

Я использую функцию lamda, и она удаляет строки и дает только цифры c значения

df3['bhk'] = df3['size'].apply(lambda x: int(x.split(' ')[0]))
df3['bhk'].unique()

Приведенный выше код дает вывод

array([ 2,  4,  3,  6,  1,  8,  7,  5, 11,  9, 27, 10, 19, 16, 43, 14, 12,
   13, 18], dtype=int64)

Может кто-нибудь объяснить, как пошагово выполнялась лямбда-функция, что это означает [0] в выражении

1 Ответ

1 голос
/ 11 марта 2020

Вызывая apply, вы применяете свою лямбда-функцию к каждому элементу вашего списка.

С помощью x.split(' ') вы разбиваете строки, например '4 Bedroom', на список, подобный: ['4', 'Bedroom']

Тогда вы берете только первый элемент этого списка ...[0]. В этом случае x.split(' ')[0] == ['4', 'Bedroom'][0] == '4'

Позже вы преобразуете эту строку '4' в целое число, вызывая int(...)

Вот так вы получили список целых чисел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...